日期:2014-05-17  浏览次数:20474 次

System.Web.HttpContext.Current.Request可写吗?
先说下为什么问这个问题吧:

领导需求:把Request.QueryString和Request.Form中的针对SQL的不安全字符过滤掉。于是我想到了给Request中的QueryString和Form过滤完之后重新赋值。

以前做过PHP开发,知道$_GET和$_POST不仅是全局的而且也是可写的。

但是现在是ASP.NET,表面上看似不可以。不过以前看过一篇文章,可以对其进行处理,然后重新赋值,具体搜索的关键字忘记了。所以想请教下。

------解决方案--------------------
假设你的逻辑验证(而不是什么“扯淡的”字符串过滤)正确,其实不存在什么“SQL防注入”的。例如对于数值类型的参数,那么你应该验证提交的数据是不是数值,例如
C# code
var sql="select * from mytable where num="+ int.Parse(str).ToString();