给出以下网址:
domain.com/page.aspx?id=123
如果在数据绑定控件(如转发器SqlDataSource)上使用该查询字符串值,该如何清理该查询字符串值?
<asp:SqlDataSource ID="projectDataSource" runat="server"
ConnectionString="MyConnectionStrings"
SelectCommand="select foo from bar">
<SelectParameters>
<asp:QueryStringParameter
DefaultValue="0"
Name="idfromqs"
QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
这样?id=asdf
不会导致错误?
这些类似的问题有很好的答案,但它们似乎都不符合我的问题
注意:这是一个内部应用程序,仅限于一小块本地IP地址。我不太担心恶意sql注入,更多的是关于防止不那么精明的用户看到令人讨厌的错误消息。
答案 0 :(得分:2)
您可以使用Selecting
的{{1}}事件来检查查询值。在调用Select方法之前会触发此事件。
SQLDataSource
答案 1 :(得分:1)
请关闭此类型。查询字符串是已经是字符串,除非您将其显式转换为其他字符串(如int32)。如果有一些理由将它转换为int32,那么你可以在代码中稍后更容易应用逻辑。
<asp:QueryStringParameter
DefaultValue="0"
Name="idfromqs"
QueryStringField="id" />