PHP中,使用mysql数据库,Linux系统。
在使用搜索功能时,直接执行这样的语句安全吗?
$keyword=$_POST["keyword"];
$sql="select * from abc where a_name like '%$keyword%'";
$rs=mysql_query($sql);
.....如果不安全,应该怎么过滤?谢谢

解决方案 »

  1.   

    $keyword = trim($keyword);
    $keyword = ereg_replace('([\'%;])', '\\\1', $keyword);
      

  2.   

    不安全,假如表单输入: \之类的,sql语句就出错,假如没处理好报错,Hacker就可以看到原始的sql语句,进一步分析你的表结构,然后...一般这样弄下应该就可以了:$keyword=mysql_escape_string($_POST["keyword"]);
      

  3.   

    对你的keyword的内容进行检查。
    比如将一些危险字符进行转义,如果确实需要like 这些危险字符那就要另想办法。
    总之先看一下数据注入之类的文章。
      

  4.   

    不安全,去参考一下大型CMS的参数过滤,很容易提取出来的
      

  5.   

    再补充一下,存在SQL注入漏洞
      

  6.   


    $keyword=mysql_real_escape_string($_POST["keyword"]);//看手册最好,这些方面的知识楼主搜索一下,SQL注入。
    $sql="select * from abc where a_name like '%$keyword%'";
    $rs=mysql_query($sql);
      

  7.   

    没找到,到网上查查比较好,不安全,肯定是SQL注入问题。
      

  8.   

    web  有几个比较典型的方面,如sql注入(lz的就是),还是跨站安全,错误处理,建议系统的学习下,还是不错的,里面都有相应的解决方案.
      

  9.   

    http://topic.csdn.net/u/20090202/10/bc90e3a2-660b-443d-b1d0-6a644601bdd6.html
    有兴趣的话可看这个贴