跨站脚本攻击 - 反射型XSS
  XSS(跨站脚本攻击)利用浏览器对服务器内容的信任,攻击者通过在网页中注入恶意脚本,使这些脚本在用户的浏览器上执行,从而实现攻击。常见的XSS攻击危害包括窃取用户会话信息、篡改网页内容、将用户重定向到恶意网站,以及执行恶意操作(如点击劫持和钓鱼攻击)
  反射型XSS:攻击者通过在URL参数中注入恶意脚本,使服务器将该脚本直接反射回用户浏览器并执行。该攻击一般不涉及数据库,而是通过服务器处理用户请求时立即返回恶意内容

安全场景:用户输入白名单过滤

  • 前端白名单
  • 后端白名单
tips
前端白名单:在前端代码中执行,用于过滤或验证用户输入的数据,UI友好,不安全,容易被绕过
后端白名单:后端业务逻辑处理或数据支持化层面执行,更安全,不易绕过
                                            
测试结果

                                                    

安全代码

安全场景:内容安全策略-CSP防护

  • 前端Meta配置
  • 后端Header配置(推荐)

在HTML页面的头部添加meta标签来配置 CSP

后端通过配置Content-Security-Policy响应头

tips
  内容安全策略(CSP:Content Security Policy)是一种由浏览器实施的安全机制(可理解为额外的安全层),旨在减少和防范跨站脚本攻击等安全威胁
  核心原理:网站通过发送一个CSP header头部(也可以在html直接设置),告诉浏览器具体的策略(什么是授权的与什么是被禁止的),从而防止恶意内容的加载和执行
  CSP 指令说明:
    default-src: 指定默认的加载内容的来源,如果未指定其他指令,则默认应用此指令
    script-src: 指定允许加载 JavaScript 的来源
    style-src: 指定允许加载样式表的来源
    img-src: 指定允许加载图片的来源
    connect-src: 指定允许向其发送请求的来源(例如 AJAX、WebSocket 连接等)

安全代码

安全场景:特殊字符实体转义

  • Manual自定义
  • Spring框架

使用Spring框架内置安全工具类实体转义

tips
实体编码(Entity Encoding)是一种将特殊字符转换为HTML实体的过程,以确保这些字符能够在HTML文档中正确显示而不会被解释为HTML标记。
常见的实体编码包括将 < 转换为 &lt; 将 > 转换为 &gt; 等。
PS:这里前端实体编码Demo放到了存储型XSS模块中
                                            
测试结果

                                                    

安全代码

安全场景:HttpOnly配置

tips
  单个接口配置:并非所有的cookie都必须设置为HttpOnly,可能有一些cookie是需要客户端JavaScript访问的,例如用于前端操作或分析目的的cookie
  全局配置场景:在整个应用程序中所有的cookie都具有HttpOnly属性,可以考虑在全局配置中进行设置
使用HttpOnly并不是绝对安全的,以下三个场景还是会存在安全问题:
    1、当攻击者使用CSRF+XSS进行攻击时,可绕过绕过浏览器的安全限制
    2、中间人攻击
    3、恶意浏览器插件
测试结果

                                                    

安全代码