0
我測試一個網頁,以防止SQL Injection.Here是我的ASPX頁面源:SqlDataSource控件和SQL注入
<asp:SqlDataSource ID="SqlDataSource_Test" runat="server"
ConnectionString="<%$ ConnectionStrings:Default %>" >
</asp:SqlDataSource>
<asp:GridView ID="GV" runat="server" Visible="False"
DataSourceID="SqlDataSource_Test" ></asp:GridView>
在後面的代碼:
string ID = Request["id"];
SqlDataSource_Test.SelectCommand = "SELECT * FROM TABLE WHERE id = @ID";
SqlDataSource_Test.SelectParameters.Add(new Parameter("ID", System.Data.DbType.String, ID));
GV.DataBind();
,但是當我請求帶網址的頁面:
http://localhost:5284/details.aspx?id=731974'; update table set name='SQL INJECTION' where ID=1--&p=2
字段「name」更新爲「SQL INJECTION」。
如何防止SQL注入在SqlDataSource
控件中?
ID參數必須是字符串 –
如果是,則創建一個存儲過程並傳遞@ID作爲參數。 – qxg