我有php脚本处理和渲染(输出)图像。我在HTML中使用我的PHP脚本:
<img src="MyScript.php?Parm1=Value1&Parm2=Value2">
问题是我的服务器上的带宽有限,我不希望其他人使用我的脚本。但是,任何人都可以从HTML源代码和使用中看到这一点,这对我的服务器来说是一个问题。
有没有办法阻止他人使用它?例如,脚本只能从我的本地服务器运行?
答案 0 :(得分:4)
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。当您收到图像生成器脚本的请求时,请执行以下操作:
同样,这可以在某种程度上被规避,但它要困难得多,并且需要向您的合法HTML提出至少一个请求。
这两种技术相结合,几乎可以处理任何你可能遇到的劫掠者。