Files
build-web-application-with-…/9.2.md
2012-10-14 23:24:49 +08:00

27 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
##9.2 确保输入过滤
用户数据的过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤这样就可以避免攻击的数据在你的程序中被误信及误用。大多数Web应用的漏洞最终都是因为没有对用户输入进行恰当过滤造成的。
这里所指的过滤数据是指三个不同的步骤:
- 识别数据,搞清楚需要过滤的数据来自于哪里
- 过滤数据,弄明白我们需要怎么样的数据
- 区分已过滤及被污染数据,保证如果存在攻击数据那么过滤之后可以让我们使用更安全的数据
##识别数据
我把识别输入作为第一步是因为如果你不知道它是什么,来自于哪里,你也就不能正确地过滤它。输入是指所有源自外部的数据。例如,所有来自客户端的数据是输入,但客户端并不是唯一的外部数据源,其它如数据库和第三方提供的接口数据等也是外部数据源。
由用户输入的数据我们通过Go非常容易识别Go通过`ParseForm`之后把用户POST和GET的数据全部放在了`r.Form`里面。其它的输入要难识别得多,例如,`r.Header`中的很多元素是由客户端所操纵的。常常很难确认其中的哪些元素组成了输入所以最好的方法是把整个map看成用户输入。
##过滤数据
在知道数据来源之后,就可以过滤它了。过滤是一个有点正式的术语,它在平时表述中有很多同义词,如验证、清洁及净化。尽管这些大家平时所用的术语稍有不同,但它们都是指的同一个处理:防止非法数据进入你的应用。
##区分过滤数据
## links
* [目录](<preface.md>)
* 上一节: [预防CSRF攻击](<9.1.md>)
* 下一节: [避免XSS攻击](<9.3.md>)
## LastModified
* $Id$