2004-10-26+ 用户输入的安全问题
最近在看一本叫《asp.net安全性高级编程》,把一些感兴趣的东西写成笔记当到这里吧,今天这一篇主要是讲怎么防御注入攻击的。
script injection
1.验证内容
a.使用regularexpressionvalidator的正则表达式来限制用户输入
2.筛选用户输入
a.使用string.replace方法
这个方法在petshop3.0中就有使用,就是把一些危险的符号(比如<>[]等)替换成安全的。
3.编码输入内容
a.使用server.encode来编码有害字符,防止这些标记在客户端执行
sql injection
a.使用string.length来限制用户的输入长度
b.使用ado.net的command对象的参数集合
隐藏窗体字段
a.始终使用sessioin检查用户是否有一个有效的会话
b.不在hidden中保存任何敏感信息
c.想办法处理hidden中的字段被删除的情况
d.在客户端检查参数的长度和数据类型
e.在服务器端重新进行验证
URL篡改
a.URL变体
为防止URL篡改,编码URL是比较明智的做法。我们可以创建一个简单的编码方法,然后利用它来读取URL中的值,创建一个编码的字符串并回传这个编码的URL字符串,接收的时候在对其解码,然后使用。
防止信息泄露
a.控制错误信息。做好异常处理
b.禁用调试和跟踪