- 安全测试教程
- 安全测试 - 首页
- 安全测试 - 概述
- 安全测试 - 流程
- 安全测试 - 恶意软件
- HTTP 协议基础
- HTTPS 协议基础
- 编码和解码
- 安全测试 - 密码学
- 安全测试 - 同源策略
- 安全测试 - Cookie
- 黑客攻击 Web 应用程序
- 安全测试 - 注入
- 测试身份验证漏洞
- 测试跨站脚本攻击 (XSS)
- 不安全的直接对象引用
- 测试安全配置错误
- 测试敏感数据泄露
- 缺少函数级访问控制
- 跨站请求伪造 (CSRF)
- 存在漏洞的组件
- 未验证的重定向和转发
- 安全测试 - Ajax 安全
- 安全测试 - Web 服务
- 安全测试 - 缓冲区溢出
- 安全测试 - 拒绝服务攻击 (DoS)
- 测试恶意文件执行
- 安全测试 - 自动化工具
- 安全测试有用资源
- 安全测试 - 快速指南
- 安全测试 - 有用资源
- 安全测试 - 讨论
安全测试 - 注入
注入技术包括使用应用程序的输入字段注入 SQL 查询或命令。
Web 应用程序 - 注入
成功的 SQL 注入可以读取、修改数据库中的敏感数据,也可以删除数据库中的数据。它还使黑客能够执行数据库上的管理操作,例如关闭 DBMS/删除数据库。
让我们借助简单的图表了解此缺陷的威胁参与者、攻击媒介、安全弱点、技术影响和业务影响。
示例
应用程序在构建以下易受攻击的 SQL 调用时使用了不受信任的数据:
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
动手实践
步骤 1 - 导航到应用程序的 SQL 注入区域,如下所示。
步骤 2 - 如练习中所述,我们使用字符串 SQL 注入来绕过身份验证。使用 SQL 注入以老板 ('Neville') 的身份登录,无需使用正确的密码。验证是否可以查看 Neville 的个人资料以及所有功能是否可用(包括搜索、创建和删除)。
步骤 3 - 我们将注入一个 SQL 语句,以便能够通过将参数发送为 'a' = 'a' 或 1 = 1 来绕过密码。
步骤 4 - 利用后,我们能够以管理员 Neville 的身份登录,如下所示。
防止 SQL 注入
有很多方法可以防止 SQL 注入。开发人员在编写代码时,应确保他们相应地处理特殊字符。OWASP 提供了备忘单/预防技术,这绝对是开发人员的指南。
- 使用参数化查询
- 转义所有用户提供的输入
- 为最终用户启用数据库的最低权限
广告