【发布时间】:2012-03-26 12:13:15
【问题描述】:
我有一个 SqlDataSource,它从查询字符串中获取一个值并将其与网格视图绑定。除非查询字符串值中有反斜杠,否则一切正常。如何转义反斜杠?
例子:
www.example.com?id=testuser -> 有效。
www.example.com?id=test\user -> 即使“test\user”存在也不起作用。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
SelectCommand="SELECT * FROM User WHERE userID = @id">
<SelectParameters>
<asp:QueryStringParameter Name="id"
QueryStringField="id" DbType="String" />
</SelectParameters>
</asp:SqlDataSource>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridViewTask" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="UnitId" HeaderText="UnitId" ReadOnly="True"
SortExpression="UnitId" />
<asp:BoundField DataField="UserName" HeaderText="UserName" ReadOnly="True"
SortExpression="UserName" />
</Columns>
</asp:GridView>
</div>
</form>
感谢您的帮助。
【问题讨论】:
-
我以前没用过sqldatasource,我希望它能对参数做一些花哨的事情,否则这是一个等待发生的sql注入灾难,只是提醒
-
@Daniel,说实话,我也不知道。有人可以插话吗?
-
为了解决 SQL 注入问题,ASP.NET 不仅仅是将参数拼接到 SQL 语句中;参数在 SQL 语句之外发送。此外,如果页面检测到攻击,默认情况下会抛出错误。不过我不知道 ASP.NET 使用什么检测技术。
标签: asp.net string escaping backslash querystringparameter