ldap_search 如何防止注入攻击,请高手指点

雨雪飘零 2016-01-17 10:35:40
使用ldap_search函数查询,如何防止注入攻击呢?

有ldap_escspe函数,但是php版本需要>=5.6,我目前使用的是5.3,就不能使用了。

我的客户说需要将一些特殊字符转义,这个我同意。

问题是客户认为,ldap_search函数中的filter参数需要用单引号引起来,才能有效防止注入攻击。

但实际上filter部分使用单引号引起来后,会出现如下错误信息:

bad search filter

客户这么认为,是因为在命令行下,使用ldapsearch命令查询时,filter部分不加单引号是会报错的,我试了一下,确实是这样。

可是在使用php提供的ldap_search函数时,恰恰相反,不加单引号是对的,加入单引号报出 bad search filter 错误。到我却不知道为什么会这样。

望高手指点,使用php的ldap_search函数,filter参数是否需要用单引号引起来?

还有就是,ldap到底用什么方式防止注入攻击?

望大师不吝赐教。
...全文
299 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨雪飘零 2016-01-17
  • 打赏
  • 举报
回复
没有人知道吗
傲雪星枫 2016-01-17
  • 打赏
  • 举报
回复
ldap_escspe 只是将 \ 转义成 \5c 模拟一下不就可以了吗? function ldap_escspe($str){ return str_replace('\\', '\\5c', $str); }
雨雪飘零 2016-01-17
  • 打赏
  • 举报
回复
可是我是ldap,不是sql。。。。
傲雪星枫 2016-01-17
  • 打赏
  • 举报
回复
防止sql的注入攻击可以使用pdo的prepare与execute来防止

<?php  
$query = $dbh->prepare("select * from table where id = ?");  
if ($query->execute(array(1000))) {   
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {  
        print_r($row);  
    }  
}  
?>  
id参数的值使用?占位符,数值写在execute里面,这样可以使用pdo的防注入机制转义特殊字符。 参考:http://blog.csdn.net/fdipzone/article/details/22330345
xuzuning 2016-01-17
  • 打赏
  • 举报
回复
ldap_escspe 只是将 \ 转义成 \5c

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧