Java Web中如何防止xss 注入呢?
首先讨论第一个问题:存到数据库中的是转码之后的还是转码之前的?
转码之后:
转码之前:
结论是:存到数据库中的就是转码之前的.为什么呢?
因为xss 攻击只存在PC web端,如果数据库中存储的就是转码之后的,那么手机app显示出来不就有问题了么?
所以最终的做法就是在PC web端 转码:
转码方法:
- escape= function (str) {
- str = str ? str : '';
- return str.replace(/</g, "\x26lt;").replace(/>/g, "\x26gt;").replace("/\x26/g", "\x26amp;").replace(/"/g, "\x26quot;");
- };
- unescape= function (str) {
- str = str ? str : '';
- return str.replace(/</g,
- "\x3c").replace(/>/g, "\x3e").replace(/&/g, "\x26").replace(/"/g, '"');
- };
注意:
在Java 后台也不要转码,只在PC web端转码,而且只在显示用户输入的字段时转码