【问题标题】:Accept server only GET request仅接受服务器 GET 请求
【发布时间】: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


【解决方案1】:

如何使用 X-XSRF-TOKEN 结合Angular JS?

这将要求您的 Web 应用程序生成并检查此令牌,但您的 AJAX 请求将被验证。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2018-12-02
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2018-11-13
    • 2016-02-02
    相关资源
    最近更新 更多