ASPNET优化Sql注入和Html注入的黑帽SEO

01

注入攻击,包括Sql注入和Html注入。我经常能看到对Sql注入防范的谈论,但对于Html注入 ,很多人并没有引起足够的重视。为了展示Html注入的效果,我们模仿了一个常见的留言本功能 。

首先,在页面声明中添加两个属性设置EnableEventValidation“false”

02

然后 ,前台页面和后台代码段分别如下:

03

程序很简单,将用户输入的内容再显示出来而已。运行代码,然后输入我们的恶意代码 ,提交。

04

我们会发现页面自动跳转到http//toomuchspam/页面!这就是所谓的“Html注入” 。当page页面render到客户端后,浏览器会按一个普通的html页面进行解析;当解析到上面的js代码时……

为了避免这种入侵,在aspnet中 ,我们最简单的处理方式就是对输入的内容进行“Html编码 ”。将后台代码改为:

05

现在我们再运行代码,发现源代码被原样输出显示在页面,并没有运行。为什么呢?查看输出页面的源代码:

ltpgtSanitizing ltimg srcquotquotINVALIDIMAGEquot onerrorlocationhrefquothttp//toomuchspam/quotgtlt/pgt

整理后 ,我们发现如下的映射转换:

< lt less than

> gt greater than

quot quota

所以js无法执行 ,但在页面显示时,我们确能看到“原汁原味”的js内容 。

但问题并没有结束,现实世界中 ,输入的内容除了恶意代码以外,还可能有如下的内容:

06

我们希望显示蓝色的文字,但经过编码后 ,显然无法达到我们的效果。为此,我们还需要进行更精确的过滤。这也是为什么之前我们要设置EnableEventValidation“false” ValidateRequest“false ”的现实原因 。

其实我最先想到的方案是:首先对整个内容进行编码,然后把我们允许使用的html标签再替换回来。这样是相当保险的 ,但是在具体的操作中,遇到了很多问题,这个郁闷啊(如果有谁有这种实现的实现代码 ,千万要拿出来大家分享一下呀)。

我先介绍另一种方案:

首先要取出标签,如,、Copyright SEOGURUBLOG.COM Rights Reserved.苏ICP备2022045461号
无锡趣快排网络技术有限公司

Theme by QKP CMS、Powered by 文子sir