Nic*_*rie 2 coldfusion cfqueryparam coldfusion-10
我想防止SQL注入攻击.我们有一个表单,要求用户的AD用户名和密码.然后我们的处理代码看起来像这样:
<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#">
Run Code Online (Sandbox Code Playgroud)
如果没有cfqueryparam,我将永远不会使用用户输入运行查询(包装用户名和密码输入),但这样的内容甚至可用于cfldap?(如果这有所不同,我们将使用CF10.)
更新:
为了澄清,当我尝试这个时,我得到以下错误:
标记CFLDAP的属性验证错误.它不允许属性CFSQLTYPE,VALUE.
不,您不能在cfqueryparam标签中使用该cfldap标签.它cfqueryparam专门用于SQL查询.你在考虑正确.永远不要信任用户输入
该cfldap标签确实给你本身一些保护.
LDAP注入
ColdFusion使用
<cfldap>标记与LDAP服务器通信.此标记具有ACTION属性,该属性指示针对LDAP执行的查询.此属性的有效值为:add,delete,query(default),modify和modifyDN.所有<cfldap>调用都转换为JNDI(Java命名和目录接口)查找.但是,因为<cfldap>包装调用,如果将本机JNDI代码传递给其属性,它将引发语法错误,从而使LDAP注入更加困难.
从ColdFusion 8开发人员安全指南的第14页开始,如果您尚未阅读,请阅读这些指南.它是为ColdFusion 8编写的,但如果不是全部,它仍然是相关的.ColdFusion 11的文档有更新版本,但它实际上也引用了版本8文档作为参考.
我建议你在这里使用白名单方法.您的活动目录对用户名和密码字段有特定要求; 只有小写和大写字母,数字等.创建一个正则表达式,仅检查用户输入的有效字符.如果任一字段包含其他任何内容,则拒绝提交并且不运行该cfldap调用.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |