1
.为什么要验证数据?
如果不验证数据,容易导致
WEB
应用出现多种漏洞,比如:
SQL
注入攻击,命令注入攻击,跨站点脚本攻击,编码攻击,文件系统攻击和缓冲区溢出。因此,为了保护
WEB
应用的安全,我们必须验证数据。
2
.什么地方需要验证数据?
所有从用户或其它设备接受数据的代码部分。
3
.什么数据需要验证?
HTTP
头部,
cookies,
,
session
,查询字符串,表格字段,和隐藏字段等。
4
.怎样验证数据?
4.1
验证策略
按顺序选择使用下面的四种策略:
n
接受正确的数据:如果知道某个数据的所有特点,就可以只接受具有所有这些
特点的数据。比如对手机号码的验证就可以使用本方法。
n
拒绝错误的数据:如果知道具有某些特点的数据是错误的,就可以明确拒绝具
有这些特点的数据。
n
规范化数据:
对数据进行分析,去掉有问题的部分,并进行适当的修改和
转换,从而将其转化为正确的数据。
n
不作验证数据:
万不得已才不验证数据。
4.2
验证方法
n
检查数据类型
;
n
检查字符型数据的长度范围
;
n
检查数值型数据的大小范围
;
n
验证数据来源进行
,
防止跨站攻击
(
也可以在
APACHE
配置文件里面做
);
n
过滤掉下面的特殊字符或为其编码:
Character
|
Encoding
|
<
|
<
or <
|
>
|
>
or >
|
&
|
&
or &
|
"
|
" or "
|
'
|
'
|
(
|
(
|
)
|
)
|
#
|
#
|
%
|
%
|
;
|
;
|
+
|
+
|
-
|
-
|
n
尽可能使用存储过程操作后台数据库
;
n
在生成
SQL
语句的地方:
Ø
过滤掉输入变量中的双引号和单引号
;
Ø
过滤常用
sql
关键字;
Ø
对于数值型字段变量,验证其值确实是数字;
n
适当使用图片验证;
n
验证数据操作的权限;
转自 : http://zoukejian.blog.51cto.com/131276/57886