我有一个这样的页面。用户将URL写入表单并提交。提交URL后,我将该页面与CURL连接,搜索字符串。如果找到该字符串,则会将URL添加到我们的数据库中。如果没有,则会给用户带来错误。
我用htmlspecialchars()清理URL也是一个正则表达式,允许A-Z,1-9,:/ - 。符号。我还使用htmlspecialchars()来清理从其他网站检索到的内容。
我的问题是,他们可以输入像这样的网址; www.evilwebsite.com/shell.exe或shell.txt
PHP会运行它,还是只是寻找HTML输出?它是否安全,如果没有,我该怎么办?
谢谢。
聚苯乙烯。 allow_url_fopen已禁用。这就是我使用curl的原因。
答案 0 :(得分:5)
我不明白为什么htmlspecialchars
或正则表达式在这里是必要的,你不需要那些。此外,PHP无法“自动”解析使用cURL检索的内容。所以是的,它是保存(除非你用输出做eval
之类的东西)。
但是,稍后处理检索到的内容时,请注意输入是用户提供的,需要进行相应处理。
答案 1 :(得分:1)
curl向服务器发出请求,服务器发送回数据。如果Web服务器上有可执行文件,您将返回该文件的二进制文件。除非您将文件写入磁盘并执行它,否则应该没有问题。在这个意义上的安全不应成为问题。