Springboot之登录模块探索(含Token,验证码,网络安全等知识)(6)

2023-05-02 来源:飞速影视
View Code
预防XSS攻击,Filter知识讲解
网上有些文章说,后端设置HttpOnly,让Cookie无法让js读写,可以防止XSS攻击。
(⊙o⊙)…简直就是乱写,首先要了解下什么是XSS攻击
Xss攻击是什么
举个简单的例子,假设你前端有个地方可以输入,然后保存的数据库的地方
用户A输入了以下东西
<script>alert(123)</script>
然后这东西就到了后台,当作一串字符串保存了起来
刚好你网站的html代码里,有个地方是显示用户输入过的东西的(例如评论区),然后上面的东西就被加载到html里面,如
<!DOCTYPE html><html><head><meta charset="utf-8"/><title></title><p><script>alert(123)</script></p></head><body></body></html>
接下来每个人打开你的网站,都会弹出123的对话框,这就是XSS攻击
怎么预防呢,在后端设置过滤器,对输入进行过滤,先上代码
1/** 2 * @auther: NiceBin 3 * @description: 系统的拦截器,注册在FilterConfig类中进行 4 * 不能使用@WebFilter,因为Filter要排序 5 * 1.对ServletRequest进行封装 6 * 2.防止CSRF,检查http头的Referer字段 7 * @date: 2020/12/15 15:32 8*/ 9@Component10publicclass SystemFilter implements Filter {11privatefinal Logger logger = LoggerFactory.getLogger(SystemFilter.class);12 @Autowired13private Environment environment;1415 @Override16publicvoid init(FilterConfig filterConfig) throws ServletException {17 logger.info("系统拦截器SystemFilter开始加载");18 }1920 @Override21publicvoid doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {22 SystemHttpServletRequestWrapper requestWrapper = new SystemHttpServletRequestWrapper((HttpServletRequest) request);2324//检测http的Referer字段,不允许跨域访问25 String hostPath = environment.getProperty("server.host-path");26 String referer = requestWrapper.getHeader("Referer");27if(!Tool.isNull(referer)){28if(referer.lastIndexOf(hostPath)!=0){29 ((HttpServletResponse)response).setStatus(HttpStatus.FORBIDDEN.value()); //设置错误状态码30return;31 }32 }33 chain.doFilter(requestWrapper,response);34 }3536 @Override37publicvoid destroy() {3839 }40 }
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号