如何使用 ColdFusion 防止 SQL 注入
ColdFusion 中如何防止 SQL 注入?我对这种语言/框架很陌生。
这是我的示例查询。
<cfquery name="rsRecord" datasource="DataSource">
SELECT * FROM Table
WHERE id = #url.id#
</cfquery>
我认为传递 url.id
是一种风险。
How do I prevent SQL injection when it comes to ColdFusion? I'm quite new to the language/framework.
Here is my example query.
<cfquery name="rsRecord" datasource="DataSource">
SELECT * FROM Table
WHERE id = #url.id#
</cfquery>
I see passing in url.id
as a risk.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
标记作为您的 ID:http://www.adobe.com/livedocs/coldfusion/6.1 /htmldocs/tags-b20.htm
Use a
<cfqueryparam>
tag for your id:http://www.adobe.com/livedocs/coldfusion/6.1/htmldocs/tags-b20.htm
逻辑对站点进行<cferror>
除了 cfqueryparam 之外,您还可以在页面顶部使用 cfparam,其中包含传递给它的每个变量的 SQL。这也有助于文档。
例如
或更高级:
由于允许正则表达式模式,因此它们可能非常强大:
同时确保您在 application.cfm 或 应用程序中使用
cferror
。 cfc 以防止暴露您的查询表和列名称。In addition to cfqueryparam you can use cfparam at the top of the page containing the SQL for each variable passed to it. This helps documentation also.
e.g.
or more advanced:
Since regular expression pattern are permitted, these can be extremely powerful:
Also make sure you use a
cferror
in your application.cfm or application.cfc to prevent exposing your query table and column names.另一种选择是使用存储过程(如果您的数据库支持它们)。
http://livedocs.adobe.com/ Coldfusion/8/htmldocs/help.html?content=Tags_r-s_22.html
Another option is to use stored procedures (if you database supports them).
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_r-s_22.html
使用cfqueryparam对于防止SQL注入是有好处的。但是,如果您想使用 cfqueryparam,则不能在 cfquery 标记中使用 cachewithin。我的另一个建议是这样做
将此条件放在页面顶部。 <
CFIF IsDefined("id") AND NOT IsNumeric(id)>
在查询标记中,像这样使用:
WHERE ID = #Val(id)#
另请参阅如何防止:
http://ppshein.wordpress.com/2008/08 /28/block-ip-in-coldfusion/
Using cfqueryparam is for preventing SQL injection is good. But, you can't use cachewithin in cfquery tag if you want to use cfqueryparam. My another advice is do just like that
Put this condition at the top of your page.
<CFIF IsDefined("id") AND NOT IsNumeric(id)>
<cfabort showerror="Invalid Query String">
</CFIF>
In your query tag, use just like this:
WHERE ID = #Val(id)#
See also, how to prevent:
http://ppshein.wordpress.com/2008/08/28/block-ip-in-coldfusion/