我目前面临一个问题,并且正在尝试探索以下情况中涉及的安全风险。
网站A具有以下代码:
<img src="http://www.websiteb.com/loadimage.php?path=http://www.websitea.com/images/logo.png" />
网站B: 以下注释是loadimage.php中将发生的一个示例(我不需要此页面的代码)
/* Use CURL to load image from $_GET['path'] and output it to page.
您是否认为网站B可能以某种方式被利用存在任何安全风险?
由于
答案 0 :(得分:1)
它可以用来代理攻击其他网站。
答案 1 :(得分:1)
是的 - 你打算滥用(假设你正在编写CURL函数)。其他人可能会创建虚假链接并使用您的代码来向其他人请求页面,或者发送攻击或尝试分发恶意内容(例如,他们托管病毒,将您网站的脚本用于传播该病毒,并且您的网站名称不好)。
但是你可以通过以下方式缓解它(选择,选择,根据你的情况):
如果可能,请从路径中删除域名;如果您知道所有图像都来自域,则将其删除并添加到PHP中。这会限制人们滥用它,因为它纯粹限制在您的域中。
如果您选择了某些域名,那么请确认该网址中的域名符合您的预期 - 再次,限制下载内容的免费统治。
如果你可以从图片网址中删除所有参数(如果你知道你永远不需要它们),那么也可以删除参数。或者,如果您可以匹配特定模式的参数,请删除所有其他参数。这有点限制了潜力。
将图片拉入后验证图片。
跟踪特定IP地址的下载量。如果它们超过预期数量,则停止提供更多。您需要知道预期金额是多少。
如果您同时提供HTML和图像下载,则只能将您要参与的文件传递到该页面。基本上,如果您收到提交HTML页面的请求,那么您将知道随后还会请求哪些图像。将它们记录在请求IP和请求代理上,并允许交付60分钟。如果您没有查看请求(即与IP /代理不匹配),则不要发送。 (注意:通常你不能依靠IP或代理来处理东西,因为它们都可以伪造,但出于这些目的,它很好)。
按Cookie跟踪。与上述类似,但使用cookie来缩小浏览器范围,而不是通过IP和代理进行跟踪。
与上面类似,您可以为每个文件创建一个唯一的ID(例如“?path = avnd73q4nsdfyq347dfh”),并在数据库中存储您要为该unique_id传送的图像.Beople_id在a之后过期而
最终测量,通过peridically更改脚本的名称 - 覆盖一点,然后退出旧脚本。 。
我希望能够了解你能做些什么。选择你能做什么。