首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预防CSRF?

预防CSRF?
EN

Stack Overflow用户
提问于 2014-10-18 07:51:43
回答 2查看 48关注 0票数 0

我经常使用AJAX编写MYSQL数据库,如下所示

代码语言:javascript
复制
$.ajax({ 
    url: "writescript.php",
    type: "POST",
    data: { data : mydata,//this could be anything
     },
    success: function (html) {
      //do something
  }
});

writescript.php看起来像这样

代码语言:javascript
复制
$data=$_POST["data"];
//and then write into database.

现在,这一切都可以了,但是任何人都可以查看ajax请求,因为它是纯JS的,可以从页面源查看。给定有关脚本名称和参数的信息,攻击者也可以尝试调用writescript,并根据脚本的操作将其写入我的数据库或读取。这显然不太好。我是不是漏掉了什么?AJAX不是专门用于这类东西的吗?还是我用错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-18 08:02:56

我不认为这里有CSRF问题。CSRF意味着攻击者通过单击链接或任何其他方法来欺骗合法的、经过身份验证的用户点击页面,然后代表他们进行操作。如果应用程序检查标头以确保请求是来自浏览器的ajax调用,并且不允许跨域ajax请求,理论上攻击者无法执行CSRF攻击。

您提出的问题更多的是授权问题。您担心攻击者可以将其写入/读取数据库,但任何合法用户都应该能够做到这一点,因此,解决方案自然是添加身份验证层以抵御攻击者。

票数 2
EN

Stack Overflow用户

发布于 2014-10-18 07:58:26

你错过了“会话”。您可以使用会话或任何其他身份验证方法来避免这种情况。也就是说,确保用户是在php代码开始时登录的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26437519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档