大部分的网站一般都有评论功能或留言功能,或类似可以让用户写东西的地方。
如果后台不经过处理,又把数据返回前端,这就会出问题了。网页解析器会把用户的信息也当成html代码给解析了。
如果用户写的是一些恶意的 js 脚本这是很危险的。专业术语叫:XSS 攻击
一、举个例子:假设后台和前台都没有对用户的信息,进行处理。我们输入如下的代码:
<script> |
整个页面被整个图片覆盖掉
如果是其他的恶意攻击,是可以入侵到你的服务器然后获取到shell 。
二、解决方法:
1、前端过滤
(a)、javascript 原生方法
//转义 元素的innerHTML内容即为转义后的字符 |
(b)、JQuery 方法
function htmlEncodeJQ ( str ) { |
调用方法
var msg1= htmlEncodeJQ('<script>alert('test');</script>'); |
2、后端过滤
我这里是JAVA 的,其他的另百度
(a)、java 一些框架自动工具类,
比如:org.springframework.web.util.HtmlUtils
public static void main(String[] args) { |
但这样有个问题,就是它全部的html标签都不解析了。
可能这不是你想要的,你想要的是一部分解析,一部分不解析。好看下面。
(b)、自己用正则来完成你的需求
下面给你demo ,根据你自己的需求来改就好了。
package top.lrshuai.blog.util; |