Skip to content

Commit 41f3b8d

Browse files
committed
update 9.2md
1 parent 363401c commit 41f3b8d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

9.2.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
- 3、区分已过滤及被污染数据,如果存在攻击数据那么保证过滤之后可以让我们使用更安全的数据
99

1010
##识别数据
11-
“识别数据”作为第一步是因为在你不知道数据是什么,它来自于哪里的前提下,你也就不能正确地过滤它。数据是指所有源自外部的数据。例如:所有来自客户端的数据,但客户端并不是唯一的外部数据源,数据库和第三方提供的接口数据等也可以是外部数据源。
11+
“识别数据”作为第一步是因为在你不知道“数据是什么,它来自于哪里的前提下,你也就不能正确地过滤它。这里的数据是指所有源自非代码内部提供的数据。例如:所有来自客户端的数据,但客户端并不是唯一的外部数据源,数据库和第三方提供的接口数据等也可以是外部数据源。
1212

1313
由用户输入的数据我们通过Go非常容易识别,Go通过`r.ParseForm`之后,把用户POST和GET的数据全部放在了`r.Form`里面。其它的输入要难识别得多,例如,`r.Header`中的很多元素是由客户端所操纵的。常常很难确认其中的哪些元素组成了输入,所以,最好的方法是把里面所有的数据都看成是用户输入。(例如`r.Header.Get("Accept-Charset")`这样的也看做是用户输入,虽然这些大多数是浏览器操纵的)
1414

1515
##过滤数据
16-
在知道数据来源之后,就可以过滤它了。过滤是一个有点正式的术语,它在平时表述中有很多同义词,如验证、清洁及净化。尽管这些术语稍有不同,但它们都是指的同一个处理:防止非法数据进入你的应用。
16+
在知道数据来源之后,就可以过滤它了。过滤是一个有点正式的术语,它在平时表述中有很多同义词,如验证、清洁及净化。尽管这些术语表面意义不同,但它们都是指的同一个处理:防止非法数据进入你的应用。
1717

18-
过滤数据有很多种方法,其中有一些安全性较差最好的方法是把过滤看成是一个检查的过程,在你使用数据之前都检查一下看它们是否是符合设计的合法数据。请不要试图好心地去纠正非法数据,而要让用户按你制定的规则去输入,历史证明了试图纠正非法数据往往会导致安全漏洞。这里举个例子:“最近建设银行系统升级之后,密码后面两位是0的,只要输入前面四位就能登录系统”,这是一个非常严重的漏洞。
18+
过滤数据有很多种方法,其中有一些安全性较差最好的方法是把过滤看成是一个检查的过程,在你使用数据之前都检查一下看它们是否是符合合法数据的要求。而且不要试图好心地去纠正非法数据,而要让用户按你制定的规则去输入数据。历史证明了试图纠正非法数据往往会导致安全漏洞。这里举个例子:“最近建设银行系统升级之后,如果密码后面两位是0,只要输入前面四位就能登录系统”,这是一个非常严重的漏洞。
1919

2020
过滤数据主要采用如下一些库来操作:
2121

@@ -64,7 +64,7 @@
6464
}
6565

6666
##总结
67-
数据过滤在Web安全中是一个基石的作用,大多数的安全问题都是用于没有过滤数据,验证数据引起的,例如前面小节的CSRF攻击,以及接下来将要介绍的XSS攻击、SQL注入等都是没有很好的数据过滤引起的,因此我们需要特别重视这部分的内容。
67+
数据过滤在Web安全中起到一个基石的作用,大多数的安全问题都是由于没有过滤数据和验证数据引起的,例如前面小节的CSRF攻击,以及接下来将要介绍的XSS攻击、SQL注入等都是没有认真地过滤数据引起的,因此我们需要特别重视这部分的内容。
6868

6969
## links
7070
* [目录](<preface.md>)

0 commit comments

Comments
 (0)