【问题标题】:How to secure ajax call (JS to PHP)如何保护 ajax 调用(JS 到 PHP)
【发布时间】:2015-08-18 20:18:38
【问题描述】:

我的问题很简单,但我找不到任何关于它的更新信息。

基本上,我有一个 phonegap 应用程序:

  • HTML 文件
  • JS 文件
  • ..

以及 OVH 服务器上的 php 文件。

当应用程序需要对数据库进行 CRUD(mysql-ovh)时,通过 ajax 调用完成。

例如:

if(confirm("Delete record ?")){
    params = { 
        "action": "delete_record",
        "record_id": record_id
    }
    ajax_post(params, function(data){
        if(data.status == 'success') {
            alert(data.msg);
            $.mobile.changePage( "aRandomPage.html");
        } else {
            alert("erreur : " + data.msg);
        }
    });
}

注意:ajax_post 只是一个个性化的函数,做一个简单的 ajax 发布,所以我不必写所有的信息,比如文件 URL 等等。

问题是任何人都可以编辑 javascript 文件(通过解压缩 .apk、.xap 或通过控制台,如果它是 Web 版本)并将参数转换为强>

params = { 
    "action": "delete_record",
    "record_id": 5
}

并删除第 5 号记录(这不是他的,他不应该这样做)或他想要的任何记录,这样做,他可以删除所有记录。

有没有一种我不知道的经典方法来处理这个问题?

我想出了一个解决方案: 我可以将密码存储在storage.setItem("") 中,每次通过ajax 访问数据库时,我都会传递用户ID(已经存储在存储中)和密码。 然后我会在 PHP 端检查密码和 ID 是否匹配(有点登录)。

这样,我可以确定发送请求的用户是记录的所有者并且可以删除它。 (我看不出有人如何绕过它,因为它需要用户的密码)

缺点是在客户端存储密码,不确定它是否更好..

提前致谢,

【问题讨论】:

    标签: javascript php ajax security


    【解决方案1】:

    您需要先要求用户登录。当他们登录时,可以在 PHP 中使用用户 ID 设置会话变量。然后在发出delete_record 请求时,检查用户ID 是否具有删除该记录的权限。

    【讨论】:

    • 你可以使用/维护不允许 php 文件的 phonegap 的 php 会话吗?
    • 你的问题是PHP files on OVH server
    • PHP 文件仅通过 phonegap 应用程序的 ajax 调用使用(仅 html/js 文件)
    • 这就是我要说的。你应该执行一个 AJAX 调用来让用户登录,它会设置一个会话变量。
    • 好的,我明白了,我对 phonegap “会话”(我正在使用存储创建)和 PHP 会话(我不知道它可以只使用 ajax 调用来维持会话)感到困惑)。非常感谢:-)
    猜你喜欢
    • 2016-01-30
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2015-05-26
    相关资源
    最近更新 更多