有没有办法从其他网站上传到我的网站?
在客户端和服务器端提交表单后,我有一个表单可以获取半大视频文件并使用令牌进行身份验证。但是,由于我们可能有300人同时上传文件,因此我们不希望某些跨站点黑客尝试上传无法通过的文件。
与他们一起尝试的问题是,当文件开始上传时,它会占用我们的内存资源(对吗?)和带宽。
我正在寻找的解决方案是使用apache或iptables或文件发送到的php脚本,一旦看到它不是来自网站的上传页面,就不允许上传。
这可能吗?
答案 0 :(得分:1)
解决方案是使用表单令牌来确保表单仅通过您的服务器提交。为此,创建一个具有随机值的表单标记,将其放在会话中以及隐藏的表单字段中。发布表单时,请检查此隐藏字段对会话的值。如果存在表单令牌并且匹配会话允许上载,否则不匹配。
您的上传表单页
PHP代码:
$token = md5 (uniqid (rand (), true));
$_SESSION[“token”] = $token;
HTML代码:
<form>
<input type="file" />
<input type=”hidden” name=”token” value=”<?php echo $token;?>”>
</form>
您的提交页面
每次用户请求您的上传页面上传新文件时,$_SESSION["token"]
都会被覆盖。因此,您不必担心其值被重置。