【发布时间】:2016-03-31 20:28:50
【问题描述】:
我正在使用 AJAX+JS 向我的服务器发出 GET 请求。我用它来删除这样的文件:
delete.php?file_id=0123456789&user=555555
当我发送 GET 请求时,delete.php 将删除 ID 为 0123456789 的文件,但有没有办法只接受服务器向自身发出的请求。
例如,如果用户打开新标签并键入www.mysite.com/delete.php?file_id=0123456789,服务器将拒绝该请求,但如果我使用 JS 函数调用它,服务器将接受该请求。
【问题讨论】:
-
对请求使用
GET是高度可利用的。如果我将一个 1x1 像素的图像请求入侵到您的页面中,该请求会传递一个文件名怎么办?您永远不会注意到您刚刚发送了删除某些内容的请求... -
AJAX 请求来自浏览器(客户端),而不是来自服务器本身。
-
POST 也是不安全的。您应该添加某种身份验证,并且应该只允许每个用户删除他自己的东西。
-
JS 是客户端,您使用 JS 的每个解决方案都可以被想要做非法事情的用户模拟。检查当前用户是否被允许删除服务器端的文件。
-
需要判断用户是否有权限删除文件。
标签: javascript php ajax .htaccess get