【问题标题】:How to Prevent Others From Using My PHP Script? [closed]如何防止其他人使用我的 PHP 脚本? [关闭]
【发布时间】:2023-03-24 11:40:02
【问题描述】:

我有处理和渲染(输出)图像的 php 脚本。我在 HTML 中使用我的 PHP 脚本,如下所示:

<img src="MyScript.php?Parm1=Value1&Parm2=Value2">

问题是我的服务器带宽有限,我不希望其他人使用我的脚本。但正如任何人都可以从 HTML 源代码和使用中看到的那样,这对我的服务器来说是个问题。

有什么办法可以防止别人使用吗?例如,脚本只能从我的本地服务器运行?

【问题讨论】:

  • 配置你的服务器在源 IP != localhost (::1) 时不服务/处理脚本。
  • 您需要考虑 1 个事实:WORLD 可以访问您的 HTML。只有您可以访问服务器内部发生的事情。使用这一事实进行保护。
  • 您有几个选择。其中之一,如果您不在nginx 上,可以使用.htaccess 来保护它。您可以使用 PHP 对其进行密码保护,也可以将其放在可公开访问的文件夹之外。这些,只是一些方法。

标签: php image security


【解决方案1】:

HTTP 引用

HTTP referer 是一个 HTTP 标头 标识网页地址的字段(即 URI 或 IRI) 链接到被请求的资源。通过检查推荐人, 新网页可以看到请求的来源。

这通常用作针对hot-linking 的基本保护。可以通过伪造 HTTP referer 标头来规避它,但在 99% 的情况下,规避这对 leechers 来说比它的价值要大惊小怪。

在 PHP 中,您可以通过 $_SERVER['HTTP_REFERER'] 访问该标头。检查 URL 是否是您的域并拒绝其他所有内容。

您也可以使用 RewriteEngine 在 Apache 配置或 .htaccess 级别执行此操作:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/.*
RewriteRule .*\.php - [NC,F]

Cookies

在会话中存储随机的唯一值和时间戳。使用随机值生成 cookie。在生成 HTML 时将其设置为 cookie。当您收到对图像生成器脚本的请求时,请执行以下操作:

  1. 有 cookie 吗?如果不拒绝请求
  2. cookie 值是否与会话中存储的其中之一匹配?如果不是,拒绝
  3. 该值的时间戳是否比 X 秒更新鲜?如果不是,拒绝

同样,这可以在一定程度上规避,但要困难得多,并且至少需要对您的合法 HTML 发出一个请求。

这两种技术结合起来,几乎可以对付你可能遇到的任何水蛭。

【讨论】:

  • 不错!谢谢..先生,我正在开发 wamp 服务器(用于本地开发和测试),但我认为 wamp 没有 $_SERVER['HTTP_REFERER']?有什么想法吗?
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 2019-08-04
相关资源
最近更新 更多