如何逃避$ _SERVER ["HTTP_REFERER"],因为它是Web应用程序的常见攻击媒介

And*_*eda 0 php

我想获得一个引荐来源网址,使用PHP和这里读到这样的回答: /sf/answers/130523221/ 并有以下几个问题:你有没有关于这个问题的更多信息?但更重要的是:你知道怎么逃避$_SERVER["HTTP_REFERER"]吗?

IMS*_*SoP 7

转义永远不会(*)依赖于数据,仅取决于数据的目标.也就是说,如果数据来自您无法完全控制的任何地方,则需要对使用数据的上下文应用适当的转义.

例如:

  • 如果以HTML格式输出,请使用htmlspecialchars()html_entities()
  • 如果添加为另一个URL的参数,请使用 urlencode()
  • 如果保存到DB,使用适当的引用功能,例如mysqli_real_escape_string,pg_escape_string,或PDO::quote; 或使用正确参数化的准备查询,该查询将查询与数据完全分开

无论您正在逃避哪些不受信任的数据,这些功能都是相同的,例如

  • 浏览器请求参数从$_GET,$_POST$_COOKIE
  • 来自的HTTP标头等 $_SERVER
  • 数据从一个上下文加载,然后传递给另一个上下文 - 例如从数据库中检索并以HTML格式显示的数据,因为这可能最初来自另一个不受信任的来源.即使从一个数据库中检索并保存到另一个数据库仍然需要正确处理,因为您返回的是"真实"数据,而不是转义表示.

如果有疑问,请逃避它.只要你在使用/显示之前立即逃脱,你就应该没有双重逃逸的问题.

(*)随意指出此规则的例外情况......