香港vps服务器遇见了SQL注入攻击,防止SQL注入攻击的方法:
企业可以采取多种有效措施来防止 SQLi 攻击。
消毒输入
输入清理(或验证)是检查和过滤用户输入的做法。这种技术确保应用程序可以识别非法用户输入和危险的可执行文件。
开发人员可以通过三种方式清理输入:
白名单清理: 只有预先批准的字符和代码字符串才能到达数据库。
黑名单清理: 开发人员禁止某些字符进入数据库(换行符、额外的空格、标签、制表符等)。
转义清理: 查询中的所有数据都需要在查询执行之前进行 SQL 转义。
通常,白名单比黑名单更简单、更安全。聪明的黑客可以找到绕过黑名单的方法,因此请尽可能使用白名单验证用户输入。
另一个好的做法是使用下拉菜单和单选按钮验证用户输入。这些输入字段可防止用户输入输入并停止注入可执行代码。
参数化 SQL 代码
参数化查询要求开发人员首先定义所有 SQL 代码,然后将每个参数传递给查询。这种编码风格使数据库能够区分代码和数据,这是动态 SQL 查询无法实现的功能。
参数化 SQL 代码可防止攻击者更改查询的意图,即使他们插入了命令。例如,如果黑客输入用户 ID ‘1’=’1,则查询将查找与整个‘1’=’1 字符串匹配的用户名 。数据库不会将查询作为命令接受。
限制用户权限
采用 零信任安全性 并将用户限制为他们执行角色所需的最低限度的权限。具有读写执行权限的帐户越少越好。
例如,如果一个网站只返回数据库内容与 SELECT 声明,不授予连接其他特权,比如 INSERT, UPDATE或者 DELETE。
另一个好的做法是不信任所有用户输入。以与来自外部和第三方来源的输入相同的方式处理来自内部用户的输入。此外,永远不要让 Web 应用程序以管理员权限连接到数据库。
设置防火墙
使用 Web 应用程序防火墙 (WAF) 过滤 Web 应用程序和数据库之间的所有流量。防火墙保护所有面向 Web 的应用程序,因此设置防御以阻止 SQLi 和类似的网络攻击。
阅读有关 不同类型防火墙的信息, 并找到能够为您的企业提供理想保护的防火墙。
更新和补丁
使用最新的补丁和更新使所有系统和防御保持最新。这样做有助于:
捕获允许 SQL 注入的新错误。
防止攻击者利用旧软件版本中存在的弱点和错误。
定期修补所有 Web 应用程序软件组件,包括库、插件、框架、Web 服务器和数据库服务器。
定期测试
运行安全测试以检查数据库和相关应用程序的弹性。定期测试对于发现所有网络攻击的漏洞至关重要。考虑运行:
从攻击者的角度查看应用程序的动态分析测试 (DAST)。
在代码级别寻找漏洞的静态分析测试 (SAST)。
对应用程序中潜在入口点的手动测试也有助于检测 SQLi 漏洞。这里有几个测试需要考虑:
提交单引号字符并检查数据库响应。
运行布尔条件(OR 1=1、OR 1=2 等)并查找响应中的差异。
提交在执行时触发时间延迟的有效负载。测量响应时间的差异。
运行触发带外网络交互的 OAST 负载。监控潜在漏洞的结果交互。
了解 渗透测试,这是市场上最全面、最真实的测试形式。
永远不要以纯文本形式存储敏感数据
加密数据库中的所有私人和机密数据。如果攻击者设法泄露敏感数据,加密还提供了额外的保护级别。
不向用户显示数据库错误
数据库错误消息绝不能显示在客户端 Web 浏览器上。攻击者可以使用错误消息中的技术细节来调整查询以实现成功注入。
不要显示带有有用信息的错误消息,而是设置简单的基于单词的错误消息,为给您带来的不便表示歉意。
培训和维护 SQLi 意识
防止 SQL 注入是一项团队工作,所有员工都必须知道网络安全的重要性 。为所有开发人员、QA 人员、系统管理员和DevOps提供合适的安全培训 。
虽然很危险,但 SQLi 攻击很容易预防
尽管 SQL 注入可能具有破坏性,但组织良好的公司永远不应成为这些攻击的受害者。设置适当的预防措施并确保您的数据库能够抵抗 SQL 注入。