【发布时间】:2011-02-10 20:05:53
【问题描述】:
我有asp:GridView 使用asp:SqlDataSource 显示客户端请求。我想限制客户端显示的信息:
View.aspx 必须显示所有内容,View.aspx?client=1 必须仅显示来自客户端 ID #1 的请求。
所以我使用<asp:QueryStringParameter Name="client" QueryStringField="client" /> 查询"EXEC getRequests @client"。
当指定某些客户端时,一切正常。但不要 - 如果不是。
我使用 SSMS 测试了我的 SP - 它在两种情况下都能正常工作 - 指定参数时和未指定参数时(NULL 显式传递)。
我该怎么办?
【问题讨论】:
-
看起来您正在使用这种方法向一些非常严重的 SQL 注入攻击向量敞开大门。
-
@womp: 我怎么打开? QueryStringParameter 仅在经过多次检查后才添加到具有适当权限的用户的代码隐藏中。
-
啊,如果您要对其进行消毒,那很好。从您的问题来看,它就像您直接使用它一样。
-
@womp:我只获取客户端 ID (int) 并将其传递给 SP。我确信这样做是安全的。我不做
"SELECT ... WHERE ID=" + Request["client"]之类的傻事 :)
标签: asp.net .net sql-server sqldatasource querystringparameter