赞
踩
注入(Injection)类攻击是 Web 安全领域中最常见的攻击方式,注入攻击发生在当不可信的数据作为命令或者查询语句的一部分被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,导致解释器执行了非预期的命令。通俗一点来讲就是把用户输入的数据当作了代码执行,发生注入类攻击需满足两个关键条件:
用户能够控制输入
程序原本要执行的代码拼接了用户输入的数据。
常见的注入攻击一般发生在执行SQL语句、执行NoSQL语句、执行系统命令、ORM使用、在 LDAP 目录中执行查找、生成要发送到 Web 浏览器的 HTML 页面等场景中。
注意避免xml注入、代码注入、SQL注入、HTML注入等注入型安全问题的发生,一定要在数据拼接的地方进行安全检查,对拼接内容进行严格校验和必要的转义处理。
禁止字符串拼接 SQL 访问数据库,最好使用MySQL预编译语句,绑定变量方式,DB层方法禁止传入拼接好的 sql 语句。
对接口参数进行严格校验,包括是否必传、类型、长度、格式、范围等。
前端页面对用户的输入进行过滤,通过将<> ‘’ “”等字符进行转义,移除用户输入的Style节点、Script节点、Iframe节点。
根据输出数据所在的上下文来进行相应的编码。数据放置于HTML元素中,需进行HTML编码,放置于URL中,需要进行URL编码。此外,还有JavaScript编码、CSS编码、HTML属性编码、JSON编码等等。
给cookie设置HttpOnly和Secure属性,HttpOnly属性使js脚本无法读取到cookie信息,Secure属性限制cookie只允许https协议的请求使用。
预防注入类攻击的最好方法是代码审核,可以将静态的(SAST)、动态的(DAST)和交互式(IAST)的安全测试工具集成到 CI/CD 流程中,以便在部署到生产环境之前检测出并解决掉注入类安全问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。