1. 跨站脚本攻击—XSS
XSS 介绍
XSS 是跨站脚本攻击(Cross Site Scripting)的简写,但是从首写字母命名的方式来看,应该取名 CSS,但这样就和层叠样式表(Cascading Style Sheets,CSS)重名了,所以取名为 XSS。
XSS 攻击,一般是指攻击者通过在网页中注入恶意脚本,当用户浏览网页时,恶意脚本执行,控制用户浏览器行为的一种攻击方式。
XSS 危害
窃取用户Cookie,获取用户隐私,盗取用户账号。
劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等。
强制弹出广告页面,刷流量等。
传播跨站脚本蠕虫,网页挂马等。
结合其他漏洞,如 CSRF 漏洞,实施进一步的攻击。
2.1详解java解决XSS攻击常用方法总结
https://www.jb51.net/article/210021.htm
2.2Java防止XSS攻击
https://blog.csdn.net/u010786200/article/details/122121071
2.3 XSS过滤器Filter实现全过程
https://blog.csdn.net/qq_38118138/article/details/118081903
CSRF攻击与防御 *
https://blog.csdn.net/weixin_40482816/article/details/114301717
CSRF攻击防御,JAVA程序利用token前后端验证每一次请求进行防御**********************************
https://blog.csdn.net/tengchengbaba/article/details/108365545
Java 安全之:csrf防护实战分析
http://t.zoukankan.com/volcano-liu-p-11301057.html
Java 安全之:csrf攻击总结 *
http://wjhsh.net/volcano-liu-p-11188748.html
__________________________________________________________________
浏览器缓存禁用—Cache-Control:no-cache、Pragma:no-cache&Expires:0
Cache-Control: no-cache:这个很容易让人产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。
Cache-Control: no-store:这个才是响应不被缓存的意思。
Pragma: no-cache:跟Cache-Control: no-cache相同,
Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。
因此,Pragma: no-cache可以应用到http 1.0 和http 1.1, 而Cache-Control: no-cache只能应用于http 1.1.
CSRF(跨站请求伪造) 漏洞与预防(附代码)**********************************
https://blog.csdn.net/SongSir001/article/details/98182051
javaweb使用过滤器防止图片盗链 ------请求头referer的使用 在web.xml文件中如下配置: <filter> <filter-name>SimpleFilter</filter-name> <filter-class>cn.SimpleFilter</filter-class> </filter> <filter-mapping> <filter-name>SimpleFilter</filter-name> <url-pattern>/images/*</url-pattern> </filter-mapping> 在servlet过滤器代码如下: package cn; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SimpleFilter extends HttpServlet implements Filter { private static final long serialVersionUID = 1L; private FilterConfig filterConfig; public void init(FilterConfig config) { this.filterConfig = config; } public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 禁止缓存 response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragrma", "no-cache"); response.setDateHeader("Expires", 0); // 链接来源地址 String referer = request.getHeader("referer"); System.out.println("refer is"+referer); System.out.println("serverName is"+request.getServerName()); if (referer == null || !referer.contains(request.getServerName())) { /** * 如果 链接地址来自其他网站,则返回错误图片 */ request.getRequestDispatcher("/error.jsp").forward(request, response); } else { /** * 图片正常显示 */ chain.doFilter(request, response); } } public void destroy() { this.filterConfig = null; } }