当前位置: 首页 > news >正文

当HTTP遇到SQL注入:Java开发者的攻防实战手册

一、从HTTP请求到数据库查询:漏洞如何产生?

危险的参数拼接:Servlet中的经典错误

漏洞代码重现:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("category");String sql = "SELECT * FROM products WHERE category='" + category + "'";try (Connection conn = dataSource.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql)) {// 处理结果集} catch (SQLException e) {throw new ServletException(e);}
}

漏洞解析:

  1. 攻击入口:直接从HttpServletRequest获取URL参数,未做任何过滤
  2. SQL拼接:直接将用户输入拼接到SQL语句中
  3. 攻击示例:当传入category=electronics' OR 1=1 -- 时,实际执行SQL变为:
    SELECT * FROM products WHERE category='electronics' OR 1=1 -- '
    
  4. 漏洞影响:导致返回所有产品数据,造成信息泄露

预编译语句的正确使用姿势

修复方案代码:

private static final String SAFE_SQL = "SELECT * FROM products WHERE category=?";public List<Product> getProducts(String category) 

相关文章:

  • UE学习记录part19
  • cesium中postProcessStages全面解析
  • 哔哩哔哩工具箱:BiliTools v1.3.2
  • 网络开发基础(游戏)之 Socket API
  • REC: 引爆全球万亿级市场!Web3+消费革命重塑全球-东南亚-跨境商业未来
  • [HCIP] OSPF 综合实验
  • 高速系统设计简介
  • 背包 DP 详解
  • PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)
  • 将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
  • 为什么 waitress 不支持 WebSocket?
  • python文件类操作:json/ini配置文件、logging日志统计、excel表格数据读写、os操作库
  • 多模态融合(十一): SwinFusion——武汉大学马佳义团队(二)
  • Java中包装类和泛型
  • 导出excel文件并在页面自动下载
  • TCP/IP、UDP、HTTP、HTTPS、WebSocket 一文讲解
  • 从零开始搭建CLIP模型实现基于文本的图像检索
  • elementUI中MessageBox.confirm()默认不聚焦问题处理
  • UML-共享汽车系统通信图深度解析
  • 蓝桥杯练习题2
  • 62岁中国国际商会副会长、康力电梯创始人王友林逝世
  • 纪念沈渭滨︱沈渭滨先生与新修《清史》
  • 两部门通报18个破坏耕地、毁林毁草典型问题
  • 火山总裁谭待:很多Agent的能力还停留在类似自动驾驶的L1阶段
  • 圆桌|艺术院校校长怎么看AI时代的艺术教育
  • 肯尼亚总统鲁托将访华