晚上下班回家翻阅到某老师的一篇《有关sql注入》仔细品位,稍有自己的一点想法,就此写出来给大家分享。
那么,文章中老师已经说得很清楚了,类型的转换是非常重要的。其实替换、过滤不安全的字符并不是最好的办法,我的系统一贯保持能让大家输入的内容原本呈现的原则,但是我的网站基本上很少出现安全问题。我就和大家分享下我的做法,希望各位多多指导。
我只坚持一条规则:对所有提交进来的数据都进行数据转换。在获取客户端发送的所有类型的数据的同时对数据进行转换,我相信有特定类型的数据是比较容易转换的,而相对的字符串要麻烦一些。例如数字型和日期型的数据,我们在获取客户端数据时完全可以编写个专门获取这种类型数据的方法来进行处理。例如获取数字的方法可以是 RequestInt(string key),而日期型可以是 RequestDate(string key)。
用 ASP.net 为例,举例以上两个方法(均为 POST 方式,GET 方式类似):
public int RequestInt(string key)
{
string val = HttpContext.Current.Request.Form[key];
int result = int.TryParse(val.ToString(), out result) ? result : 0;
return result;
}




