Add 0.9.2.md syntax highlighting

This commit is contained in:
vCaesar
2016-12-18 16:21:19 +08:00
parent 539bcc65c6
commit 6fde19e4b5

View File

@@ -31,6 +31,7 @@
- 加入检查及阻止来自外部数据源的变量命名为CleanMap。
接下来,让我们通过一个例子来巩固这些概念,请看下面这个表单
```html
<form action="/whoami" method="POST">
我是谁:
@@ -42,7 +43,9 @@
<input type="submit" />
</form>
```
在处理这个表单的编程逻辑中非常容易犯的错误是认为只能提交三个选择中的一个。其实攻击者可以模拟POST操作递交`name=attack`这样的数据,所以在此时我们需要做类似白名单的处理
```Go
r.ParseForm()
name := r.Form.Get("name")
@@ -51,10 +54,12 @@
CleanMap["name"] = name
}
```
上面代码中我们初始化了一个CleanMap的变量当判断获取的name是`astaxie``herry``marry`三个中的一个之后
我们把数据存储到了CleanMap之中这样就可以确保CleanMap["name"]中的数据是合法的从而在代码的其它部分使用它。当然我们还可以在else部分增加非法数据的处理一种可能是再次显示表单并提示错误。但是不要试图为了友好而输出被污染的数据。
上面的方法对于过滤一组已知的合法值的数据很有效,但是对于过滤有一组已知合法字符组成的数据时就没有什么帮助。例如,你可能需要一个用户名只能由字母及数字组成:
```Go
r.ParseForm()
username := r.Form.Get("username")
@@ -62,7 +67,8 @@
if ok, _ := regexp.MatchString("^[a-zA-Z0-9]+$", username); ok {
CleanMap["username"] = username
}
```
## 总结
数据过滤在Web安全中起到一个基石的作用大多数的安全问题都是由于没有过滤数据和验证数据引起的例如前面小节的CSRF攻击以及接下来将要介绍的XSS攻击、SQL注入等都是没有认真地过滤数据引起的因此我们需要特别重视这部分的内容。