我有一些下面列出的SQL select语句。有没有理由参数化这些查询?有些是用asp编写的,有些是用asp.net编写的。
使用sqldatasource控件的asp.net:
SelectCommand="SELECT * FROM HEADLINES WHERE visible = 'Yes' AND FIN = 'Yes' ORDER BY DATE DESC></asp:SqlDataSource>
使用ADO记录集对象的asp classic中的一个查询:
Set Season = Server.CreateObject("ADODB.Recordset")
Season.ActiveConnection = INTERNET_STRING
Season.Source = "SELECT * FROM SEASON WHERE SHOW_INDIC = Season_var
这些查询不接受用户输入,但它们位于asp / aspx页面而不是后面的代码上,我是否应该担心潜在的SQL注入或任何其他漏洞?感谢。
答案 0 :(得分:2)
参数化查询将消除SQL注入。如果查询中包含变量,则查询容易受到攻击。有关详细信息:http://msdn.microsoft.com/en-us/library/ff648339.aspx
但是,您的第一个查询是静态的,它没有变量。静态查询没有理由进行参数化。
你的第二个查询有变量,因此应该参数化。