我在我的一个网站上看到了一些SQL注入攻击.它以查询字符串的形式出现,其中包含"cast"关键字和一堆十六进制字符,当"解码"时,这些字符是向DB中注入横幅广告.
我的解决方案是扫描完整的URL(和params)并搜索"cast(0x"的存在,如果它在那里重定向到静态页面.
你如何检查你的URL的SQL注入攻击?
我不.
相反,我使用参数化SQL查询并依靠数据库来清理我的输入.
我知道,对于PHP开发人员和MySQL用户来说,这是一个新颖的概念,但使用真实数据库的人多年来一直这样做.
例如(使用C#)
// Bad! SqlCommand foo = new SqlCommand("SELECT FOO FROM BAR WHERE LOL='" + Request.QueryString["LOL"] + "'"); //Good! Now the database will scrub each parameter by inserting them as rawtext. SqlCommand foo = new SqlCommany("SELECT FOO FROM BAR WHERE LOL = @LOL"); foo.Parameters.AddWithValue("@LOL",Request.QueryString["LOL"]);