PHP防注入求教?
本帖最后由 u010572351 于 2013-06-27 21:10:49 编辑
目前我知道的sql攻击是填入了大量的 ‘%这样的特殊字符来实现的,如果我是登陆界面想要防sql攻击,
我知道用户名和密码不会出现特殊字符,我使用正则匹配,只要出现了特殊字符我直接就将其打死,这样处理好吗?
还有,addslashes 一般做什么用的啊?麻烦高手多分享下防注入这些,小白知道的太少了。
主要是以下不是很清楚:
magic_quotes_gpc=off
magic_quotes_gpc=on
addslashes()
stripslashes()
str_replace();
如果不是登陆、搜索等入口页面,平时php页面正常的dql语句应该不用考虑注入问题吧。
分享到:
——解决方案——————–
// 适用各个 PHP 版本的用法<br />if (get_magic_quotes_gpc()) {<br /> $lastname = stripslashes($_POST['lastname']);<br />}<br />else {<br /> $lastname = $_POST['lastname'];<br />}<br /><br />// 如果使用 MySQL<br />$lastname = mysql_real_escape_string($lastname);<br /><br />echo $lastname; // O\'reilly<br />$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
——解决方案——————–
好用不好用,自己用了才知道。
——解决方案——————–
if (get_magic_quotes_gpc()) { //如果 magic_quotes_gpc开启了,则会影响 post、get、cookie 请求的数据,单/双引号、反斜杠会在前面自动加上反斜杠,因此要先用stripslashes去掉反斜杠以免出现双重转义<br /> $lastname = stripslashes($_POST['lastname']);<br />}<br /><strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码*网/</strong><strong>搞gaodaima代码</strong>else { //否则取原数据<br /> $lastname = $_POST['lastname'];<br />}
——解决方案——————–
magic_quotes_gpc 开关
php 5.3 默认关闭
php 5.4 已取消
判断 get_magic_quotes_gpc() 的返回,已是远古的事情了
——解决方案——————–
只要sql语句书写规范,就没有问题。例如不要使用字符串连接,而是使用代入。正确地使用引号。使用PDO。
绝对安全是不可能的。与成本有很大关系。
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP防流入求教
转载请注明原文链接:PHP防流入求教
