我正在寻找一个工具,它将通过我的coldfusion代码文件并在需要时添加cfqueryparam。我发现很多会扫描并显示我需要进行更改的位置,但我发现其中一个位于http://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injection处,与我正在查找的位置非常接近,但不会添加cfsqltype(或maxlength)。我想知道这是否仍然可以防止没有cfsqltype的sql注入?如果它是必需的(我知道它在技术上是可选的),你知道另一个可以做到这一点的工具吗?我相信重要的是要确保order by
子句中的任何变量都被参数化,该工具不检查。扫描查询并在需要时添加cfqueryparam的工具
我正在考虑折扣并更改http://www.webapper.com/blog/index.php/2008/7/22/ColdFusion-SQL-Injection的代码来完成所有这些工作,但我认为首先要问是明智的。
没有cfsqltype属性将承担cf_sql_varchar。仍然会阻止SQL注入,因为使用了绑定参数而不是字符串。数据库必须将每个参数都转换为数据库为每列接受的类型。这可能会拖慢一切。 –
*仍然可以防止没有cfsqltype的sql注入*是的,绑定变量阻止“值”作为sql命令执行。但是,您应该使用适当的类型来避免[隐式转换的风险],这是正确的(http://stackoverflow.com/questions/27049918/coldfusion-parameterizing-a-query/27066113#27066113)。 * by by子句中的变量被参数化..该工具不检查哪个*不能通过(通常)参数化顺序。它使用的对象名称必须作为sql命令进行评估。绑定变量旨在*防止*发生。 – Leigh
(编辑)*压低和改变代码*我不认为这可以轻松完成。要确定cfsqltype,该工具需要解析每个查询的SQL,标识所有涉及的表,然后查询数据库元数据以标识列类型并将它们映射到适当的cfsqltype。事实发生后,用任意查询来做这件事情会更难。 RE:*会假设为cf_sql_varchar *技术上说'cf_sql_char',但是yep ..本质上它默认为一个字符串类型:) – Leigh