+ -
当前位置:首页 → 问答吧 → 有时间了在作一下第五题

有时间了在作一下第五题

时间:2008-10-25

来源:互联网


<?
function inject_check($sql_str){
        $gz="select|insert|update|delete|union|into|load_file|outfile|'|/*|*|../|./";//定义过滤字符
        return eregi($gz,$sql_str);// 进行过滤
}
if(inject_check($_REQUEST)){//如果本页面用post方式提交就改成$_POST,用get就改成$_GET
        exit;
}
?>

作者: gvtbs   发布时间: 2008-10-25

这样做MS不好,如果用户要提交一个select的单词,根本就没法提交的嘛。。。或者提交一个引号字符串呢?

作者: 飞翔de希望   发布时间: 2008-10-28

对于防注入我个人的作法是这样的:

1.全站的白提交方式与接收方式明确如post提交就用$_POST接收。
2.提交数据的统一,如变量aa.php?name=phpchina&&sex=0;
3.对所有的客户端数据都是要重新验证的。
4.尽量少用隐藏域,尽量用POST方式。

作者: gvtbs   发布时间: 2008-10-31

很明显这些字符串("select|insert|update|delete|union|into|load_file|outfile|'|/*|*|../|./")都是放在单引号中的,对查询,插入.....这些操作并没有什么影响的!!!!!所以不必过滤,要过滤的只是单引号,双引号.......等特殊的字符!!!!

作者: liexusong   发布时间: 2008-11-01

这是我个人的作法吧!!在我看来所有可能威协到数据库操作的提交都是不可取的!!!
这就要求在编程的时候不要用到这些敏感的关键字了,当然大家可以改一下$gz这个变量的值来满足自己的需求。

作者: gvtbs   发布时间: 2008-11-09