首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfldap允许cfqueryparam吗?

cfldap允许cfqueryparam吗?
EN

Stack Overflow用户
提问于 2015-03-23 17:40:09
回答 1查看 297关注 0票数 2

我想防止SQL注入攻击。我们有一个表单,要求用户的AD用户名和密码。然后,我们的处理代码如下所示:

代码语言:javascript
复制
<cfldap name="ldap_result" action="query" server="999.999.999.999" 
attributes="userprincipalname,title,samaccountname,sn,name,mail,cn" 
filter="(&(objectclass=user)(sAMAccountName=#form.username#))"
start="dc=us,dc=company,dc=lan"
scope="subtree"
username="US\#form.username#" 
password="#form.password#">

如果没有cfqueryparam (包装用户名和密码输入),我永远不会运行带有用户输入的查询,但是这样的查询对cfldap也是可用的吗?(如果这有什么区别的话,我们就在CF10上。)

更新:

为了澄清,当我尝试这样做时,我得到了以下错误:

标记CFLDAP.It的属性验证错误不允许属性CFSQLTYPE,值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-23 19:06:35

不,您不能在您的cfqueryparam标记中使用cfldap标记。cfqueryparam专门用于SQL查询。不过,你的思维是正确的。从不信任用户输入

cfldap标记本身确实为您提供了一些保护。

LDAP注入 ColdFusion使用<cfldap>标记与LDAP服务器进行通信。此标记具有一个ACTION属性,该属性指示对LDAP执行的查询。此属性的有效值是:添加、删除、查询(默认)、修改和modifyDN。所有<cfldap>调用都被转换为JNDI ()查找。但是,由于<cfldap>封装了调用,如果将本机JNDI代码传递给其属性,则会引发语法错误,从而使LDAP注入更加困难。

从第14页的ColdFusion 8 developer security guidelines,你应该阅读,如果你还没有这样做。它是为ColdFusion 8编写的,但大部分(如果不是全部)仍然是相关的。有一个updated version of the document for ColdFusion 11,但实际上它也引用了版本8的文档。

我建议你用白名单的方法。您的活动目录对用户名和密码字段有特定的要求;只有小写和大写字母、数字等。创建一个正则表达式,只检查用户输入的那些有效字符。如果任一字段包含任何其他内容,则拒绝提交,并且不运行cfldap调用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29216792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档