【问题标题】:How to protect ajax methods called via jquery?如何保护通过 jquery 调用的 ajax 方法?
【发布时间】:2013-07-18 22:59:52
【问题描述】:

我在用户会话中有一个数据网格表(管理员的用户可视化)。

要初始化数据网格,我需要使用数组设置 url 数据,其中包含应在表中的项目。

为此,我必须允许显示这些数据的操作(Codeigniter mvc)。

如何保护我的操作,只允许我的应用用户通过 jQuery.ajax() 方法访问?

例如,我已经登录到我的会话并访问带有数据网格的视图,该视图使用此函数获取数据并将其设置在表上:

  $('#content').WATable(
  {
    url: '/api/showusers'
  }).data('WATable');

谢谢!

【问题讨论】:

  • 你要找的是所谓的CSRF保护。
  • Hmm.. 这已在我的表单中激活,但如何防止不允许用户使用此数据访问此操作?使用 crsf 令牌?
  • 解决方案:制作一个带有摘要认证的 REST API。我使用了这个 REST 服务器:github.com/philsturgeon/codeigniter-restserver

标签: php jquery ajax security codeigniter


【解决方案1】:

app/config/constants.php

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');

然后在showusers()

public function showusers() {
    if(!IS_AJAX) { 
        show_404()
    }

    // continue with processing
}

我到处都用这个!如果您在仅限用户的区域,codeigniter 将处理用户身份验证并确保该操作仅由 ajax 访问。

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多