Springboot防止XSS攻击

238 阅读2分钟

XSS攻击

跨站脚本(Cross-site scripting)简称XSS。是通过某些方法将恶意脚本注入到网页,使得用户在访问网页时会自动执行恶意代码,从而获得用户信息。

XSS的分类和具体实现

分为以下几类:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS、通用型XSS、突变型XSS。技术有限只解释前两种,更详细的内容请见这一次,彻底理解XSS攻击 - 掘金 (juejin.cn)

反射型

反射性XSS一般是利用网页的检索功能,一般搜索的内容会体现在URL中,若此时该服务器没有对URL的检索功能,则会将输入的数据反射回浏览器,并展示在页面里。

image.png

若此时URL中有恶意代码,此时恶意代码就会被植入到你的页面中。

示例(来自bilibili技术蛋老师)

image.png

此时,输入的搜索内容为一段JavaScript代码,该段js代码就会保存在网页里,当网页渲染到script标签时,就会执行里面的内容。因此攻击者可以使用更复杂的js代码来获取内容。

存储型

存储型XSS一般用于可以发表评论的网站。攻击者在评论区将恶意代码作为评论发布,若服务器不进行过滤,此时网站服务器会将该评论存储到数据库中。当其他用户访问该评论时,服务器会将恶意代码(即这段评论)展现在其他用户的网页上,当网页渲染到时,就会自动执行恶意代码。

示例(来自bilibili技术蛋老师)

image.png

当用户在评论区评论这行js代码时,服务器会将js代码在数据库,当其他用户访问该代码时,会从数据库将js代码(即该条评论)放在页面上。从而浏览器会自动执行script里的代码。

image.png

防止XSS攻击

原理

进行XSS攻击时,需要注入script标签来执行js代码,若服务器(后端)传输的数据里

实现