2 wjpaiinnngg wjpaiinnngg 于 2014.12.06 15:43 提问

怎么防止html注入式攻击

写了一个简单的jsp。三个控件
一个text,一个password,一个submit
当点击submit时,跳转到另外一个页面,并输出前一个页面的text内容

问题是当在text中输入一些html的标签如:时
在跳转页中会把这些字符串变成html的控件,而不是字符串,有什么办法吗?

3个回答

showbo
showbo   Ds   Rxr 2014.12.06 20:03
已采纳

将<>替换为对应的实体对象<和>就行

showbo
showbo 替换后在回发就不会将客户端提交的html代码作为html对象显示出来了。<>替换为&lt;和&gt;
接近 3 年之前 回复
showbo
showbo 回复wjpaiinnngg:垃圾csdn将我发的实体对象给显示出来了,就是将<>替换为&amp;lt;和&amp;gt;这样就直接显示出尖括号,而不是html对象了
接近 3 年之前 回复
wjpaiinnngg
wjpaiinnngg 那发送回客户端的时候呢?不是还要转变为标签么?
接近 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.06 18:50

在服务器端对输入的内容中的特殊符号,比如<>这些做过滤处理,或者进行htmlencode编码。

wjpaiinnngg
wjpaiinnngg 我关心的是服务器发送回客户端时,原本是内容,可到客户端的浏览器却变成了标签。。。
接近 3 年之前 回复
qiujuer
qiujuer   2014.12.07 15:09

提交时使用JS进行过滤一次进行unicode编码转换;后面接收到后进行反编码转换就ok。
同时如果需要写进数据库的话还需要进行一些字段的过滤;因为有些符号会引起SQL的作用。

当然你也可以使用存储过程等操作。

qiujuer
qiujuer 回复wjpaiinnngg: 可以 详细说一下 你的流程么?还有 要达到的需求
接近 3 年之前 回复
wjpaiinnngg
wjpaiinnngg 可是用http发送回客户端时还是html标签,在客户端中还是会变成控件的。。。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片