【问题标题】:How to protect from malicious use of jQuery post handler?如何防止恶意使用 jQuery 后处理程序?
【发布时间】:2011-04-27 20:16:24
【问题描述】:

我使用 jquery POST 调用来获取数据以显示在我网站的各个部分。

通常,他们发布到单个“ajax_handler.php”页面,该页面读取请求的参数并返回相关数据。典型的参数可能是 'get_order_details',123

如何阻止用户发布到脚本以尝试检索他们不应该能够检索的数据?例如,我知道我可以验证数据是否属于当前登录的用户,但我如何才能阻止用户“猜测”可能存在“get_some_info”的处理程序?

由于用户甚至可以直接从 URL 运行 javascript,这对我来说似乎是一个主要的安全问题,因为客户端可以访问 SESSION 和 COOKIE 数据(否则我会使用这些数据来保证安全性)。

我想我可以先用一个随机字符串命名我的每个处理程序标识符,但我不想影响我的代码的易读性。

【问题讨论】:

    标签: php jquery post


    【解决方案1】:

    使用随机字符串命名您的处理程序是通过默默无闻的安全性,虽然它可能会减慢某人的速度,但它不会阻止他们。

    最好的办法是在每次访问页面时存储会话或数据库校验和。然后也将相同的校验和与 POST 内容一起发送。当通过 AJAX 或其他方式提交表单时,您将比较校验和。如果它们不匹配,那么您就知道用户不在适当的页面上并且正在尝试通过其他方法访问处理程序。

    【讨论】:

    • 我已经阅读了这些“身份验证令牌”,但如果用户通过地址栏运行 javascript,身份验证令牌将以完全相同的方式传递/访问,从而使其变得多余。除非我误解了什么?
    • 这对您的用户来说是一件很糟糕的事情,而且这不是 Internet 应有的工作方式。它也是通过默默无闻的安全性,因为用户可以很容易地看到你为每个请求提供的任何“校验和”......
    • @cusimar9 - 不,他们必须先加载正确的页面才能获取令牌。诚然,他们可以访问页面、查看源代码、获取令牌,但此时如果他们通过在地址栏中输入请求来提交请求,这有什么关系呢?此方法可防止他们“盗链”请求。要使其正常工作,您需要为每个请求重新生成参数。因此,如果他们可以访问特定的数据库 ID,他们仍然可以获得每个 ID,但不是以自动方式,至少他们每次都必须加载整个页面。
    • @meagar - 多么愚蠢的说法。我想你认为我们应该摆脱密码和帐户,让每个人都链接到他们想要的任何数据。这对合法用户应该是透明的,但可以防止恶意用户获取他们不应该获取的数据。或者更糟糕的是,一个邪恶的人在他们不知情的情况下制作链接或图像并对用户的帐户进行各种令人讨厌的事情。谷歌 XSRF 攻击
    • 不,我特别赞成密码和帐户。只要用户通过身份验证,试图控制他们如何访问他们的数据是徒劳的。
    【解决方案2】:

    对于每个用户,您可以在数据库中存储他应该能够查看哪些数据以及他不应该查看哪些数据。每次收到请求时,例如 get_order_details,您应该调用一个函数来进行安全检查,以确保用户已登录,并且他可以访问“get_order_details”方法或他尝试的任何其他方法访问。

    【讨论】:

    • 我知道我可以验证用户,但我说的是不需要用户登录的功能
    • @cusimar 您可以为您网站的每个访问者分配一个临时用户 ID,并使用它来跟踪他已加载的部分。每 24 小时在 Cron 上运行一个脚本,以删除 24 小时前创建的临时帐户。
    【解决方案3】:

    您尝试做的事情与互联网的运作方式根本相反。您不能也不应该尝试限制用户向您的服务发出请求的方式。这是一种非常过时和落后的思维方式。与其试图限制用户使用您的服务的方式,不如感谢他们首先使用您的服务。

    您所能做的就是确保用户已通过身份验证并有权访问他们请求的记录。如果您使用的系统没有身份验证,并且您想防止用户“猜测”下一条记录的 ID,请不要使用顺序 ID。使用随机生成的字符串作为您的标识符。让它们足够长,以使用户很难偶然发现其他记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      相关资源
      最近更新 更多