From da5fb89b595ae53bc1107000ae2b0e859adc75fc Mon Sep 17 00:00:00 2001 From: vCaesar Date: Sat, 10 Jun 2017 12:17:56 +0800 Subject: [PATCH] Format and remove 09.2.md spaces --- zh/09.2.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/zh/09.2.md b/zh/09.2.md index 14ea04d9..337ccd2c 100644 --- a/zh/09.2.md +++ b/zh/09.2.md @@ -33,26 +33,26 @@ 接下来,让我们通过一个例子来巩固这些概念,请看下面这个表单 ```html -
- 我是谁: - - -
+
+ 我是谁: + + +
``` 在处理这个表单的编程逻辑中,非常容易犯的错误是认为只能提交三个选择中的一个。其实攻击者可以模拟POST操作,递交`name=attack`这样的数据,所以在此时我们需要做类似白名单的处理 ```Go - r.ParseForm() - name := r.Form.Get("name") - CleanMap := make(map[string]interface{}, 0) - if name == "astaxie" || name == "herry" || name == "marry" { - CleanMap["name"] = name - } +r.ParseForm() +name := r.Form.Get("name") +CleanMap := make(map[string]interface{}, 0) +if name == "astaxie" || name == "herry" || name == "marry" { + CleanMap["name"] = name +} ``` 上面代码中我们初始化了一个CleanMap的变量,当判断获取的name是`astaxie`、`herry`、`marry`三个中的一个之后 @@ -61,13 +61,13 @@ 上面的方法对于过滤一组已知的合法值的数据很有效,但是对于过滤有一组已知合法字符组成的数据时就没有什么帮助。例如,你可能需要一个用户名只能由字母及数字组成: ```Go - r.ParseForm() - username := r.Form.Get("username") - CleanMap := make(map[string]interface{}, 0) - if ok, _ := regexp.MatchString("^[a-zA-Z0-9]+$", username); ok { - CleanMap["username"] = username - } - +r.ParseForm() +username := r.Form.Get("username") +CleanMap := make(map[string]interface{}, 0) +if ok, _ := regexp.MatchString("^[a-zA-Z0-9]+$", username); ok { + CleanMap["username"] = username +} + ``` ## 总结 数据过滤在Web安全中起到一个基石的作用,大多数的安全问题都是由于没有过滤数据和验证数据引起的,例如前面小节的CSRF攻击,以及接下来将要介绍的XSS攻击、SQL注入等都是没有认真地过滤数据引起的,因此我们需要特别重视这部分的内容。