我经常使用AJAX编写MYSQL数据库,如下所示
$.ajax({
url: "writescript.php",
type: "POST",
data: { data : mydata,//this could be anything
},
success: function (html) {
//do something
}
});writescript.php看起来像这样
$data=$_POST["data"];
//and then write into database.现在,这一切都可以了,但是任何人都可以查看ajax请求,因为它是纯JS的,可以从页面源查看。给定有关脚本名称和参数的信息,攻击者也可以尝试调用writescript,并根据脚本的操作将其写入我的数据库或读取。这显然不太好。我是不是漏掉了什么?AJAX不是专门用于这类东西的吗?还是我用错了?
发布于 2014-10-18 08:02:56
我不认为这里有CSRF问题。CSRF意味着攻击者通过单击链接或任何其他方法来欺骗合法的、经过身份验证的用户点击页面,然后代表他们进行操作。如果应用程序检查标头以确保请求是来自浏览器的ajax调用,并且不允许跨域ajax请求,理论上攻击者无法执行CSRF攻击。
您提出的问题更多的是授权问题。您担心攻击者可以将其写入/读取数据库,但任何合法用户都应该能够做到这一点,因此,解决方案自然是添加身份验证层以抵御攻击者。
发布于 2014-10-18 07:58:26
你错过了“会话”。您可以使用会话或任何其他身份验证方法来避免这种情况。也就是说,确保用户是在php代码开始时登录的。
https://stackoverflow.com/questions/26437519
复制相似问题