我目前正在使用file_get_contents()获得一个网页的标题,给定的网址。在wamp上,这是非常好的。然而,当我把它转到我的web服务器上时,我遇到了一个问题,导致我找到了这的答案。(将allow_url_fopen设置为1)。
设置这个有重大的安全风险吗?如果是,有没有其他方法从URL本身抓取网页的标题?
(此外,不确定这方面的标签,因此请随时酌情添加/删除!)
编辑(1):进一步的研究给我带来了这问题,这个问题说这也是一种风险,如果应用程序不需要它,就禁用它。不幸的是,这并没有充分地告诉我所涉及的风险。
编辑(2):快速注意,我将使用这个函数与用户输入(网址),而不是内部,这就是为什么我要确保绝对不涉及安全风险
发布于 2014-06-05 00:20:03
这只是您希望将allow_url_fopen设置为0的原因之一。
假设您允许用户输入一个url,并且让您的服务器获取这个url。
你可以这样编码:-,你不应该编码这个-
echo file_get_contents($_POST['url']);问题是这里有一个安全问题。有人可以传递文件路径而不是url,并且可以访问服务器的文件。
例如,可能有人将/etc/passwd作为url传递,并能够查看其内容。
现在,如果allow_url_fopen设置为0,那么您将不会使用file_get_contents来获取URL,而是使用CURL。
发布于 2014-06-05 00:09:20
allow_url_fopen很好。如果您需要该功能,请启用它。有更好的工具可以从远程URL加载数据(比如卷曲扩展),但是对于一些简单的用例来说,它已经足够了。
其近亲allow_url_include是不安全的。它允许像include()和require()这样的函数从远程URL加载和运行代码,这是一个非常糟糕的想法。把那个关了。
在过去,allow_url_include并不总是作为一个独特的选项存在,因此有必要关闭allow_url_fopen,以防止编写糟糕的脚本包含来自远程URL的数据。不过,现在已经不是这样了。
https://stackoverflow.com/questions/24049534
复制相似问题