淘东电商项目(69) -互联网安全架构设计(XSS攻击防御)

简介: 淘东电商项目(69) -互联网安全架构设计(XSS攻击防御)

引言

本文代码已提交至Github(版本号:b18e61d3130215c1da77849cc94ba33c60149f88),有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop

在之前博客《淘东电商项目(67) -互联网安全架构设计(方法论)》,主要讲解了互联网安全架构设计的方法,主要介绍了如下几种:

  • 基于网关实现IP黑名单与名单拦截
  • API接口实现Token授权认证
  • 使用MD5实现API接口验证签名,防止抓包篡改数据
  • 实现API接口安全加密传输(公钥和私钥互换机制)
  • 基于Oauth2.0 实现API接口开放平台
  • 接口参数使用网关实现防止XSS、SQL注入
  • 定期工具实现代码健康扫描

上面的打勾代码实现在上一篇博客已经实现《淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)》,本文主要讲解如何防御XSS攻击。

本文目录结构:

l____引言

l____ 1.什么是XSS攻击

l____ 2.代码实现

l____ 3.测试

1.什么是XSS攻击

XSS攻击在前面的博客有讲解过,有兴趣的同学可以参阅《互联网并发与安全系列教程(05) - 常见的Web安全漏洞(XSS攻击、SQL注入、防盗链)》

用简单的话来描述,举个例子:比如用户提交订单,url地址如下:

可以看到上面的订单地址是有“商品名称name”、“价格price”、“描述desc”组成,其中“描述”是用户填写的,这个时候黑客把里面的描述(desc)改成js脚本如:

提交信息到后台后,后台会直接保存到数据库,下次如果商户查询订单列表时,会加载商品描述desc,这个时候会直接把商户本地的cookies信息发送给黑客的服务器,这就是XSS攻击了。那该如何防御呢?

其实用户提交信息的时候,我们在后台网关处理下请求参数就好了,把关键字“<”、“>”这些脚本括号,做下转义处理即可,下面来讲解下代码。

2.代码实现

继续完善上一篇博客的代码,完善建造者里面的内容。

①建造者接口增加过滤参数功能:

/**
 * description: 网关行为建造者
 * create by: YangLinWei
 * create time: 2020/5/20 9:09 上午
 */
public interface GatewayBuild {
  /**
   * 黑名单拦截
   */
  Boolean blackBlock(RequestContext ctx, String ipAddres, HttpServletResponse response);
  /**
   * 参数验证
   */
  Boolean toVerifyMap(RequestContext ctx, String ipAddres, HttpServletRequest request);
  /**
   * 参数过滤转义(防御XSS攻击)
   */
  Map<String, List<String>> filterParameters(HttpServletRequest request, RequestContext ctx);
}

②接口实现(VerificationBuild类):

@Override
public Map<String, List<String>> filterParameters(HttpServletRequest request, RequestContext ctx) {
    Map<String, List<String>> requestQueryParams = ctx.getRequestQueryParams();
    if (requestQueryParams == null) {
        requestQueryParams = new HashMap<>();
    }
    Enumeration em = request.getParameterNames();
    while (em.hasMoreElements()) {
        String name = (String) em.nextElement();
        String value = request.getParameter(name);
        ArrayList<String> arrayList = new ArrayList<>();
        // 将参数转化为html参数 防止xss攻击 < 转为&lt;
        arrayList.add(StringEscapeUtils.escapeHtml(value));
        requestQueryParams.put(name, arrayList);
        log.info(">>>>>>过滤参数name:{},arrayList:{}>>>>>>>", name, arrayList);
    }
    return requestQueryParams;
}

③构建者:

@Component
public class GatewayDirector {
    @Resource(name = "verificationBuild")
    private GatewayBuild gatewayBuild;
    public void direcot(RequestContext ctx, String ipAddres, HttpServletResponse response, HttpServletRequest request) {
        /**
         * 黑名单拦截
         */
        Boolean blackBlock = gatewayBuild.blackBlock(ctx, ipAddres, response);
        if (!blackBlock) {
            return;
        }
        /**
         * 参数验证
         */
        Boolean verifyMap = gatewayBuild.toVerifyMap(ctx, ipAddres, request);
        if (!verifyMap) {
            return;
        }
        /**
         * XSS攻击处理
         */
        Map<String, List<String>> filterParameters = gatewayBuild.filterParameters(request, ctx);
        if (filterParameters != null && filterParameters.size() > 0) {
            ctx.setRequestQueryParams(filterParameters);
        }
    }
}

3.测试

浏览器访问:http://localhost/api-pay/cratePayToken?payAmount=9999&orderId=20200513141452&userId=27&productName=广东米酒&orderDes=< script>alert(‘sss’)</ script>,在控制台,可以看到订单描述orderDesc里面的内容被转义了,从而达到防御XSS攻击。

本文完!

目录
相关文章
|
7月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
|
7月前
|
存储 设计模式 人工智能
AI Agent安全架构实战:基于LangGraph的Human-in-the-Loop系统设计​
本文深入解析Human-in-the-Loop(HIL)架构在AI Agent中的核心应用,探讨其在高风险场景下的断点控制、状态恢复与安全管控机制,并结合LangGraph的创新设计与金融交易实战案例,展示如何实现效率与安全的平衡。
1253 0
|
7月前
|
消息中间件 监控 前端开发
如何开发项目管理系统中的项目结项板块?(附架构图+流程图+代码参考)
在企业项目管理中,“项目结项”是关键环节,常因流程不清、文档不全、审批滞后等问题导致交付困难。本文介绍如何通过“项目结项”模块实现线上化管理,涵盖结项申请、审批流程、成果上传、权限控制等功能,帮助团队高效完成项目收尾,避免成果丢失与流程混乱。内容包括功能设计、业务流程、系统架构、数据库设计、核心代码实现、前端交互及优化建议,助力项目管理系统快速落地并稳定运行。
|
4月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
|
11月前
|
人工智能 运维 安全
AI 安全架构概述
AI 安全架构涵盖数据采集、模型训练、推理部署等阶段,确保安全性、隐私与合规。其核心组件包括数据层、模型层、推理层、应用层和运维层,针对数据安全威胁(如数据投毒)、模型窃取、对抗攻击及系统漏洞等风险,提出数据加密、对抗训练、联邦学习等防御策略,并强调开发前、开发中和部署后的最佳实践,以降低 AI 解决方案的安全风险。
1254 13
|
6月前
|
存储 安全 前端开发
如何开发一套EHS 健康安全环境管理系统?(附架构图+流程图+代码参考)
本文介绍如何开发一套完整的EHS(健康、安全和环境)管理系统,涵盖系统核心模块、技术架构、数据库设计、前后端开发示例及上线建议,帮助企业提升安全管理效率与合规性。
|
6月前
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
603 0
|
7月前
|
数据挖掘 项目管理 Python
如何开发项目管理系统中的项目启动板块?(附架构图+流程图+代码参考)
本文介绍了项目管理系统中“项目启动”板块的设计与实现,涵盖功能模块、业务流程、开发技巧及效果展示,并提供代码参考和常见问题解答,助力企业高效搭建项目管理平台。
|
6月前
|
传感器 安全 前端开发
如何开发一套EHS健康安全环境管理系统中的风险管理板块?(附架构图+流程图+代码参考)
本文详解企业EHS(健康·安全·环境)系统中的风险管控板块,强调其核心在于构建“识别—评估—巡检—治理—验证”的闭环流程,将风险数据可视化并转化为可落地的行动指引。内容涵盖风险管控的意义、功能边界、系统架构、LEC评估方法、巡检流程、看板设计、开发技巧、落地建议、实现效果及代码参考,帮助技术团队和EHS负责人快速掌握系统搭建要点,提升企业安全管理水平。