2016-04-29 74 views
0

我正在寻找一个工具,它将通过我的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的代码来完成所有这些工作,但我认为首先要问是明智的。

+0

没有cfsqltype属性将承担cf_sql_varchar。仍然会阻止SQL注入,因为使用了绑定参数而不是字符串。数据库必须将每个参数都转换为数据库为每列接受的类型。这可能会拖慢一切。 –

+0

*仍然可以防止没有cfsqltype的sql注入*是的,绑定变量阻止“值”作为sql命令执行。但是,您应该使用适当的类型来避免[隐式转换的风险],这是正确的(http://stackoverflow.com/questions/27049918/coldfusion-parameterizing-a-query/27066113#27066113)。 * by by子句中的变量被参数化..该工具不检查哪个*不能通过(通常)参数化顺序。它使用的对象名称必须作为sql命令进行评估。绑定变量旨在*防止*发生。 – Leigh

+0

(编辑)*压低和改变代码*我不认为这可以轻松完成。要确定cfsqltype,该工具需要解析每个查询的SQL,标识所有涉及的表,然后查询数据库元数据以标识列类型并将它们映射到适当的cfsqltype。事实发生后,用任意查询来做这件事情会更难。 RE:*会假设为cf_sql_varchar *技术上说'cf_sql_char',但是yep ..本质上它默认为一个字符串类型:) – Leigh

回答

2

使用该工具或QPScanner扫描您的代码库并查找缺少cfqueryparm或缺少cfprocparam的查询。

一旦找到它们,手动更新和测试每个实例

不要交叉手指,希望事情自己出来。

我经历过这个过程a number of times,我可以保证,你应该把你的时间正确地更新代码..