Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止第三方调用内部POST方法_Javascript_Python_Django_Ajax_Security - Fatal编程技术网

Javascript 防止第三方调用内部POST方法

Javascript 防止第三方调用内部POST方法,javascript,python,django,ajax,security,Javascript,Python,Django,Ajax,Security,我担心我的web应用程序的安全性,我使用Django,有时我使用AJAX调用Django url,该url将执行代码,然后根据结果返回带有消息的HttpResponse,用户从未注意到这一点,因为它发生在后台 但是,如果我使用AJAX调用的url是,例如,“runcode/”,并且用户以某种方式跟踪此url,并尝试使用该url(类似于“www.example.com/runcode/”)向我的域发送请求,它将不会运行代码,因为Django希望csrf令牌也会被发送,所以问题来了 用户有可能获得c

我担心我的web应用程序的安全性,我使用Django,有时我使用AJAX调用Django url,该url将执行代码,然后根据结果返回带有消息的HttpResponse,用户从未注意到这一点,因为它发生在后台

但是,如果我使用AJAX调用的url是,例如,“runcode/”,并且用户以某种方式跟踪此url,并尝试使用该url(类似于“www.example.com/runcode/”)向我的域发送请求,它将不会运行代码,因为Django希望csrf令牌也会被发送,所以问题来了


用户有可能获得csrf令牌并发送POST?,我觉得答案是“是”,因此任何人都可以帮助我提示如何拒绝这些没有预期目标的呼叫?

如其他评论中所述,web应用程序的目的是基于用户交互执行代码。有时,代码只会导致显示另一个html模板,而在其他情况下,它会导致执行其他代码

如果您担心未经授权的用户访问敏感数据,django内置了一些工具来帮助进行身份验证/授权

建议您仔细阅读:


不仅django,这种行为在其他所有人中都很常见

您只能应用2种解决方案

  • 应用CORS并只允许您的域阻止其他域从您的API响应访问数据,但如果用户直接调用您的API端点,这将无效
  • 正如莱恩在评论中所说,若数据是敏感的或用户的个人信息,那个么在API中添加身份验证
    谢谢

    除非它只提供静态内容,否则对服务器的任何请求都将使其运行代码。那么,在您的情况下会有什么不同呢?通常,执行的代码只是html模板的呈现,但其他URL有时会管理敏感数据,有时会在后端服务器上执行查询,因此我认为如果有人发现这些URL,可能会很危险,我正在阅读相关内容,似乎csrf令牌涵盖了这一点,但我并不是100%地认为,为什么我要求@thierrylayhuille调用URL并运行代码是所有web应用程序的基础。如果视图管理敏感数据,那么您需要对URL进行某种身份验证,以便只允许某些用户访问它—不管它是在后台发生还是发生在什么情况下。您的web服务器将在某些情况下执行操作,例如,当请求特定URL时。现在,这些东西有危险吗?如果是这样,那就不要做!如果没有,那么你到底担心什么?用户是否可以将任何代码传递给服务器,而服务器将盲目执行用户提供的任何代码?那是的,那很糟糕。如果没有,你又担心什么呢?是的,一般来说,任何人都可以随时向你的服务器发送任何请求。这是在公共互联网上运行公共web服务器的事实。你无法阻止。CSRF令牌只能防止某些自动攻击,但不能防止这一普遍事实。您只需期望任何人随时调用您的方法,并相应地验证请求,可能还需要身份验证。这对我来说更准确,因为它包含了关于每个人都要求我实现的身份验证的文档参考,谢谢,但是在阅读了大量文档之后,我终于明白,解决我担忧的办法是我编辑问题的csrf令牌