——此文章摘自《PHP网络编程典型模块与实例精讲》定价
¥
特价
¥
详细>>http://track
linktech
cn/?m_id=dangdang&a_id=A
&l=
&l_type
=
width=
height=
border=
nosave>
前面对客户端提交的数据进行了截去头尾空格然后判断是否为空判断密码长度是否在有效范围判断Email的格式是否有效以及判断用户名是否重复等数据的有效性验证是否这就足够了呢?其实还有一个SQL注入漏洞的问题值得重视
客户端提交上来的数据往往被用于构造SQL语句使用这些构造出来的SQL语句访问数据库时会发生SQL注入攻击所谓SQL注入即客户端提交的数据用于构成了非法访问数据库的SQL语句
为防止SQL注入漏洞一是要遵循最小权限的原则即赋予连接数据库的用户尽可能小(仅能执行预期的操作)的权限严禁使用特权用户(如root);二是要尽可能地过滤由客户端提交上来的可疑的非法数据
假设在服务器端将执行如下SQL语句
http://developcsaicn/web/images/gif>
这条SQL语句的本意是根据客户端的要求删除特定用户但是如果一个不怀好意的访问者知道服务器端的数据库的用户信息表的名称而且提交了一个用户名为 OR 的数据即$username = OR – –此时将上面这条SQL语句中的$username替换成提交上来的实际值后成为
http://developcsaicn/web/images/gif>
由于删除条件中的OR 结果表t_user中的记录将被全部删除
要防范SQL注入漏洞实际上只要屏蔽一些SQL命令及关键字即可在进行服务器端的数据有效性验证之前调用以下函数即可防止SQL注入漏洞
http://developcsaicn/web/images/gif>
输入以上代码并将其保存成commonphp文件在需要验证的页面文件中只需要简单地引用该文件即可引用的语法如下
http://developcsaicn/web/images/gif>
在PHP中可以用来引入其他文件的关键字有 requirerequire_onceinclude和include_oncerequire和include以及require_once和 include_once之间的区别仅在于当要引用的文件不存在时使用require和require_once会导致一个致命错误而使用 include和include_once则仅产生一个警告后续的代码仍会继续执行另外require_once和include_once能够确保仅对被包含的文件引用一次