如何防止他人使用我的PHP脚本?

时间:2014-01-13 12:58:46

标签: php image security

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

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

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

有没有办法阻止他人使用它?例如,脚本只能从我的本地服务器运行?

1 个答案:

答案 0 :(得分:4)

HTTP referer

  

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

这通常用作hot-linking的基本保护。它可以通过伪造HTTP referer标头来规避,但是在99%的情况下绕过这个问题比对leechers更值得大惊小怪。

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

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

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

缓存

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

  1. 是那里的饼干吗?如果不拒绝请求
  2. 将cookie值与其中一个存储在会话中的值相匹配吗?如果没有,拒绝
  3. 是该值超过X秒的时间戳吗?如果没有,拒绝
  4. 同样,这可以在某种程度上被规避,但它要困难得多,并且需要向您的合法HTML提出至少一个请求。

    这两种技术相结合,几乎可以处理任何你可能遇到的劫掠者。