互联网安全架构平台设计之预防XSS攻击

文章目录

  • 互联网安全架构平台设计之预防XSS攻击
  • 一、什么是XSS攻击?
  • 二、XSS攻击详解
    • 1.XSS攻击的原理
    • 2.解决方案
  • 三、注意事项

一、什么是XSS攻击?

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

跨站脚本攻击(XSS)与SQL注入漏洞漏洞一样,都是利用了Web页面的编写不完善,是最普遍的Web应用安全漏洞,当然现在基本上所有的框架都做了XSS防御。

二、XSS攻击详解

1.XSS攻击的原理

XSS攻击出现的原因就是返回的数据信息没有做特殊字符转义,然后前端展示出来的时候直接当做了HTML处理了,所以注入的JS脚本就直接执行了。
简单的举个例子: 以前的博客平台等网站没有做XSS攻击防护的时候,我们在评论里面加入JS脚本(<script> window.location.href = 'www.baidu.com'</script>),等别人再打开这个博客的时候就自动展示评论,由于特殊字符没有转义,前端HTML直接把评论当JS脚本执行了,所以打开博客就跳转到了百度页面。

2.解决方案

XSS攻击的解决方案是比较多的,下面说一下常用的解决方案:
Cookie的安全设置:

  • http-only: 只允许http或https请求读取cookie,禁止JS代码读取cookie,发送请求的时候自动发送cookie。
  • secure-only: 只允许https请求读取,发送请求时自动发送cookie。
  • host-only: 只允许主机域名与domain设置完成一致的网站才能访问cookie。

使用后端过滤器:

@Component
@WebFilter
public class XssFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {...}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 对请求的参数进行转义chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);}@Overridepublic void destroy() {...}
}
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {/*** Constructs a request object wrapping the given request.** @param request The request to wrap* @throws IllegalArgumentException if the request is null*/public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}/*** 核心代码,对参数中的HTML特殊字符进行转义,StringEscapeUtils工具类已经给写好了,* 获取到的参数就是转义过后的,不需要自己写了,有其他业务需求的可以自己实现。*/@Overridepublic String getParameter(String name) {String oldValue = super.getParameter(name);if(StringUtils.isEmpty(oldValue)){return oldValue;}String newValue = StringEscapeUtils.escapeHtml4(oldValue);return newValue;}
}

三、注意事项

后端做XSS过滤的时候要考虑当前请求是否要过滤或者过滤后特殊情况的需要怎么处理:
简单举个例子:如果对表单填的内容进行了过滤,例如input输入框里填了 1<2,如果转义就变成了1&lt;2,然后表单回显的时候显示的是1&lt;2肯定是不对的,亲身经历过这个问题。

互联网安全架构平台设计之预防XSS攻击相关推荐

  1. 互联网安全架构平台设计

    互联网安全架构基本上分为以下内容: 1.Web 安全常见攻击手段(基本知识) 详细:XSS(脚本注入). SQL 注入.防盗链.CSRF(Token 伪造).上传漏洞.等. 彻底分析根据不同的业务场景 ...

  2. PHP预防XSS攻击,ajax跨域攻击的方法

    对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlsp ...

  3. xss过滤器无法处理ajax请求_thunkPHP 预防XSS攻击

    比如在有人恶意在你的输入框中或文本域中输入<script>标签,如果不做处理的话,输入框中的<script>会保存到我们数据库中,等到将这个数据拿出来展示的时候,就等于将这个内 ...

  4. react textarea 空格为什么不换行_React 怎么实现预防XSS 攻击的

    本文首发于政采云前端团队博客:浅谈 React 中的 XSS 攻击 https://www.zoo.team/article/xss-in-react 前言 前端一般会面临 XSS 这样的安全风险,但 ...

  5. 有效预防xss_预防XSS攻击的一些方法整理

    XSS又称CSS,全称Cross SiteScript(跨站脚本攻击), XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原 ...

  6. 如何预防 XSS 攻击

    1.XSS 攻击 XSS 攻击,即跨站脚本攻击,它是 Web 程序中常见的漏洞. 原理:攻击者在 Web 页面里植入恶意的脚本代码(css 代码.Javascript 代码等):当其他用户浏览该页面时 ...

  7. 如何预防 XSS 攻击 和 XSRF 攻击

    常见的 web 前端攻击方式有哪些 XSS 跨站请求攻击 XSRF 跨站请求伪造 XSS攻击举例 一个博客网站(请访问正规网站,放心,CSDN应该是安全的),作者发表了一篇博客,其中嵌入了<sc ...

  8. 面试问题如何预防xss攻击

    1. XSS攻击原理 XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩 ...

  9. ThinkPHP6 预防XSS攻击的一点小建议

    背景 前几天,我们线上项目,出现一些恶意攻击行为: 基本就是恶意用户在一些接口开放的参数上, 填写了类似 <script>alert('搞事情');</script> 的代码, ...

最新文章

  1. 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
  2. Android TextView 高亮字体并添加点击事件
  3. Java中 byte[]数组序列化和fastjson序列化区别
  4. Mobile RDA 同步数据库的类--转
  5. 嵌入式实训-day1
  6. 计算机桌面游戏开发,桌面游戏菜单怎么做
  7. display:flex
  8. 中小型互联网企业迁移上云,保证云端资源安全迁移
  9. 物流设计大赛优秀作品_中国外运杯第七届全国大学生物流设计大赛案例专家评审会在京召开...
  10. Flex读取xml文件
  11. l28n和开发版_Atmel之SAM4S Xplained开发板评测(二)
  12. linux shell基础
  13. 框架中要懂的一些术语
  14. 关键词提取算法TF-IDF
  15. spring mvc 简单的文件上传与下载
  16. java手机编译器_Java编译器手机版
  17. 实现领域驱动设计.pdf
  18. 海量PDF识别(OCR),实现全文检索服务
  19. 百度AI认为最漂亮的中国女星是----范冰冰
  20. 论文笔记:OntoED: Low-resource Event Detection with Ontology Embedding

热门文章

  1. python土味情话_爱数智慧推出方言TTS数据 AI也能飚出“土味儿情话”
  2. NoSQL数据库笔谈(1)
  3. 阿狸V任务页面爬取数据解析
  4. WPF在ListView中绑定Command命令的写法
  5. FreeSWITCH 空号识别 (mod_da2使用说明)
  6. 马良建模学习笔记——楼梯制作三
  7. 我用一只爬虫俘虏了面试官并收获了offer
  8. PAT--L1-046. 整除光棍
  9. iOS_新版iOS11 UITbleView适配的一些问题及解决方法
  10. Idea 快捷键 使用总结