您的位置:首页 > 编程语言 > PHP开发

php防止sql注入的程序设计

2015-12-29 15:31 423 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/liwenming910/article/details/50427066

正确的防止sql注入:(1)找到所有的sql注入漏洞。(2)修补这些漏洞

sql注入的防御不是一件简单的事,技术一般常常会走入一些误区,比如只对用户的输入做一些escape处理,这是非常不够的,在php中,很多是用mysql_real_escape_string。但是这是可能被绕过的,那是不是再增加一些过滤字符就可以了呢,比如处理空格,括号,select,insert等。其实这种基于黑名单的方式,都或多或少存在一些问题。而在sql的保留字中,像having,order by等都可能出现在自然语言中,从而造成误杀。正确的做法是使用预编译语句,在php中可以用:

$stmt = $mysqli->prepare();

$stmt->bind_param();

关于具体语法请查看手册,这里不再详述。

使用预编译的sql语句,sql语句的语义不会发生改变。在sql语句中,变量用?表示,攻击者无法改变sql的结构。

除了使用预编译语句外,还可以使用安全的存储过程对抗sql注入。检查数据类型。


总结:在php中使用预编译sql语句及检查数据类型是最好的方式。

第三方扩展:利用pdo操作数据库是一种好的避免sql注入的方式。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: