我最近了解到人们在 PHP 中使用 HTTP 引用器尝试 SQL 注入是很常见的。我需要防止哪些其他输入?
我目前正在“清理”传入的$_GET[]and $_POST[],现在是服务器的引荐来源网址。我还从用户名之类的内容中删除 HTML,当然,在我做任何事情之前,我会删除无效的 UTF8。(目前我不处理 UTF7。)
我最近了解到人们在 PHP 中使用 HTTP 引用器尝试 SQL 注入是很常见的。我需要防止哪些其他输入?
我目前正在“清理”传入的$_GET[]and $_POST[],现在是服务器的引荐来源网址。我还从用户名之类的内容中删除 HTML,当然,在我做任何事情之前,我会删除无效的 UTF8。(目前我不处理 UTF7。)
存在大量影响应用程序安全性的漏洞和攻击。您可以从最常见和最关键的列表开始,OWASP Top 10是最受欢迎的资源,其中包含详细信息和出色的备忘单,可快速入门。
漏洞来自不安全的开发实践,因此这里是清单格式的OWASP 安全编码实践快速参考指南。实施这些做法将减轻最常见的软件漏洞。
您的问题是关于输入验证的,这只是您要解决的问题的一部分。保护您的 Web 应用程序并不是一门精确的科学,其中可以定义和实施所有可能问题和修复的完整列表。
但是,输入验证仍然是应用程序安全性最有效的技术控制之一。它可以缓解许多漏洞,包括跨站点脚本、各种形式的注入和一些缓冲区溢出。
PHP 中用于获取用户提供的变量:
$_GET$HTTP_GET_VARS$_POST $HTTP_POST_VARS$_COOKIE $HTTP_COOKIE_VARS$_REQUEST$_FILES$HTTP_POST_FILES$_SERVER[‘REQUEST_METHOD’]$_SERVER[‘QUERY_STRING’]$_SERVER[‘REQUEST_URI’]$_SERVER[‘HTTP_ACCEPT’]$_SERVER[‘HTTP_ACCEPT_CHARSET’]$_SERVER[‘HTTP_ACCEPT_ENCODING’]$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]$_SERVER[‘HTTP_CONNECTION’]$_SERVER[‘HTTP_HOST’]$_SERVER[‘HTTP_REFERER’]$_SERVER[‘HTTP_USER_AGENT’]$_SERVER[‘PHP_SELF’]这可以是您代码中的任何地方,甚至可以是其核心的 php 漏洞。攻击者可以找到 rpc 调用或通过全局变量,并在机器级别的远程机器上运行任何代码
通过这种方式,攻击者可以在您的网站上注入 javascript 代码,并允许他检索 cookie 和其他很容易危及您的网站的有用信息。看这里,看看这是多么常见的攻击。
您应该配置您的应用程序,以便在出现问题时不会向攻击者提供任何信息。用户名枚举就是这样,这意味着后端服务为攻击者提供了真假答案,例如无效密码或用户名不存在,使您容易受到暴力攻击
很多时候,您的应用程序可能会由于某些代码允许用户根据需要发出任意数量的请求而失败。其他时候,这是一些错误代码的问题,需要比应有的时间多得多的时间来运行。后者是一个非常常见的漏洞,大多数时候需要更新才能工作。