Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347723
  • 博文数量: 76
  • 博客积分: 2790
  • 博客等级: 少校
  • 技术积分: 882
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-13 09:15
个人简介

Will do as will say

文章分类

全部博文(76)

文章存档

2013年(7)

2012年(13)

2011年(2)

2009年(2)

2008年(52)

我的朋友

分类: 网络与安全

2008-08-21 15:10:26

表单数据验证
在数据被输入程序前必须对数据合法性的检验。非法输入问题是最常见的Web应用程序安全漏洞。
需要做到:对任何输入内容进行检查。接受所有可以接受的内容,拒绝所有不能接受的内容。
所有提交的表单数据,都必须验证两次,即提交前在客户端用Javascript验证,提交后在服务器端用脚本再次验证,保证数据的合法性。尤其是对于必填项,不仅需要同时在客户端和服务端验证是否做了输入,还要验证输入的数据格式是否正确。
需要注意:在客户端上的Javascript验证并不是真正意义上的检查。比如恶意用户很容易在自己的终端上禁用脚本执行,从而防止客户端的内容检查脚本运行,使得他可以输入恶意代码并成功地提交表单。
对于图像上传功能,需要验证上传图像的格式及大小是否合乎要求。

防范SQL语句注入攻击
程序需要对所有从外部接收到的数据进行过滤,防止恶意攻击。主要防范的字符有“'|script|exec|insert|select|delete|update|count|chr|mid|master|truncate|declare”。
使用积极的过滤而不是消极的过滤。 换句话说,就是检查应该输入什么,而不是检查不应该输入什么。只规定哪些内容不应该输入,会留下太多的漏洞。因为有很多内容都不应该被输入。积极的过滤方式应该包括:
• 是否为空(需要去掉空格后判断)
• 是否是正确的数据类型 (字符串,整数等)
• 是否要求带有参数
• 字符编码是否允许
• 输入内容是否达到了内容长度的最大或者最小界限
• 是否允许输入空值
• 如果应该输入数字,那么确定数字大小的范围。
• 输入内容是否造成了数据重复,如果是,判断这种情况是否可以接受。
• 输入内容是否符合格式要求(比如是否采用正则表达式)
• 如果是通过下拉列表选取的内容,确保其包含了有效的值

地址栏变量需要进行验证
对于从地址栏上接收到的变量,必须要验证其合法性。例如,如果从地址栏上收到了文章ID值,则需要验证ID是否为数字,是否有攻击字符等。

跨站攻击的预防
在验证提交的数据时,为防止跨站攻击 ,可以检查上一个页面是否为本站,另外,过滤