【问题标题】:call php script from this ajax only [closed]仅从此 ajax 调用 php 脚本 [关闭]
【发布时间】:2017-05-10 12:00:34
【问题描述】:

我试图用谷歌搜索我的问题,但我什至不知道如何问我的问题:当用户在我的网站上执行一个特定事件时,我想调用此函数,这会增加其他用户在一个mysql数据库:

function incrasecredit(){
   $.ajax({
     type: "POST",
     url: "/increasecredit.php",
     data: {},
     success: function(html) {
     }
    }); 
   }

...简单。问题是(如脚本名称所示)此事件与“信用系统”/货币相关联。所以我想它应该是安全的。用户不应以任何其他方式访问“/increasecredit.php”。例如。只需通过浏览器执行它。只有在这种特殊情况下,当我在我的 jquery 脚本中调用它时。更准确地说,当用户点击 iframe 时,应该执行 incrasecredit()。并且仅在这种情况下。我怎样才能保护这个脚本不被错误地执行?我试图用令牌解决它,但还没有弄清楚。我觉得我没有得到更大的图景。提前致谢。

【问题讨论】:

  • 您是否在使用某种形式的用户身份验证?我认为更好的方法是在 increasecredit.php 脚本中进行检查,因为 ajax 请求(以及任何其他类型的前端验证)可以简单地“欺骗”
  • 是的,用户身份验证由会话完成。但是如何检查用户是否有权增加其他用户条目的信用值?
  • 这是你自己的系统; 你不应该知道吗?交易的约束条件是什么?比他们应该做的更频繁地这样做是否符合用户的利益?
  • 是的,确实,更频繁地执行此操作符合用户的利益。例如。如果他有第二个假帐户并试图通过调用 php 脚本来增加另一个帐户的信用。我想我可以轻松地限制请求的数量,但是第一个(错误的)请求呢?我很困惑。
  • 所以这实际上是关于检测假账户,一个完全独立的问题?您可以比较 IP 地址和浏览器指纹。

标签: javascript php jquery


【解决方案1】:

您应该在您的页面上实施 CSRF 令牌,以检查请求是否通过合法机制来自您的网站。这归结为让一个仅使用的令牌与需要匹配存储的令牌与用户会话 cookie 的 POST 请求一起传递。此令牌也应在一段时间后自动过期。

此外,后端应该实现某种 ACL 来授权交易。可以通过会话检查用户的角色以获取经过身份验证的用户。

【讨论】:

  • 好的,这对我帮助很大。即使没有得到它100%。让我直截了当地说:我在创建会话时创建了一个令牌,该令牌存储在用户会话中。当我执行我的 ajax 调用时,我也会发送我的令牌。 php 检查发送的令牌是否与会话中的令牌相等?像这样: xhr.setRequestHeader('X-CSRF-Token', getCSRFTokenValue());所以php知道请求是否来自站点。一个问题:其他消息来源表明发送带有标头的令牌不安全?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多