Php 在这个AJAX场景中,特别是在身份验证方面,最好的安全准则是什么?

Php 在这个AJAX场景中,特别是在身份验证方面,最好的安全准则是什么?,php,mysql,ajax,security,Php,Mysql,Ajax,Security,[我希望这个问题不要太宽泛,我认为这个主题很有趣,但我恳请你告诉我是否不符合政策。] 我的设想是: 我有一个LAMP网站,它还存储敏感数据和文档 只有注册用户才能在网站上操作,并且只能对某些数据和文档进行操作。用户存储在$\u会话变量中 大多数页面实现了一种基本的权限控制,但是一些重要的数据库操作是通过AJAX调用的 AJAX安全性的实现非常糟糕,因为任何一个聪明的人都可以篡改发送他们喜欢的任何id的请求,并以极其简单的方式删除记录 要求一本完整的关于安全性的书显然有点太多了(我已经在这方面

[我希望这个问题不要太宽泛,我认为这个主题很有趣,但我恳请你告诉我是否不符合政策。]

我的设想是:

  • 我有一个LAMP网站,它还存储敏感数据和文档
  • 只有注册用户才能在网站上操作,并且只能对某些数据和文档进行操作。用户存储在$\u会话变量中
  • 大多数页面实现了一种基本的权限控制,但是一些重要的数据库操作是通过AJAX调用的
  • AJAX安全性的实现非常糟糕,因为任何一个聪明的人都可以篡改发送他们喜欢的任何id的请求,并以极其简单的方式删除记录
要求一本完整的关于安全性的书显然有点太多了(我已经在这方面读了很多书并做了很多尝试),比如说,我主要关心的是AJAX页面是否应该得到特别的重视,因为我需要保护整个软件以防黑客和其他问题

假设我主要关心的是AJAX页面是否应该得到特别的关注

不是真的。他们应该得到与任何其他请求几乎完全相同的待遇所有HTTP请求都来自您的系统之外,并且在客户端的控制下(因此可以或多或少地由用户可以想象的任何内容组成)

您可能会返回JSON,您可能会返回完整的HTML文档,您可能会返回XML—但格式不重要,数据重要

如果请求是敏感数据,则您需要(在服务器上)对用户进行身份验证,然后确保他们有权查看/编辑该数据

唯一的区别是您如何呈现“您未经授权”信息。当您希望浏览器将数据加载到XHR中时,不能简单地返回带有登录表单的HTML文档。响应需要适当格式化,JavaScript需要能够处理它

假设我主要关心的是AJAX页面是否应该得到特别的关注

不是真的。他们应该得到与任何其他请求几乎完全相同的待遇所有HTTP请求都来自您的系统之外,并且在客户端的控制下(因此可以或多或少地由用户可以想象的任何内容组成)

您可能会返回JSON,您可能会返回完整的HTML文档,您可能会返回XML—但格式不重要,数据重要

如果请求是敏感数据,则您需要(在服务器上)对用户进行身份验证,然后确保他们有权查看/编辑该数据

唯一的区别是您如何呈现“您未经授权”信息。当您希望浏览器将数据加载到XHR中时,不能简单地返回带有登录表单的HTML文档。响应需要适当格式化,JavaScript需要能够处理它

我有一个LAMP网站,它还存储敏感数据和文档

您应该尽可能少地存储敏感数据。尤其是当您不确定如何保护这些信息的安全/隐私时。例如,使用OpenID或其他东西进行身份验证。我很喜欢它的简单性。我创建了一个小程序来查看lightopenId的使用情况。通过使用,它简化了OpenID的使用。当您使用OpenID时,您也使用安全的OpenID提供程序。密码也不会以明文形式通过网络传输,而是受https/SSL保护

只有注册用户才能在网站上操作,并且只能在 某些数据和文件。用户存储在$\u会话变量中

是的,这就是课程的目的

大多数页面实现了一种基本的权限控制, 但是一些重要的DB操作是通过AJAX调用的

你至少应该仔细阅读一下。(不要在10点停止。

AJAX安全性的实现非常糟糕,任何一个如此聪明的人都是如此 可以篡改发送任意id的请求并删除 记录极其简单

见上一节。至少阅读OWASP前10部分。例如,许多人忽视的一些事情就是

我有一个LAMP网站,它还存储敏感数据和文档

您应该尽可能少地存储敏感数据。尤其是当您不确定如何保护这些信息的安全/隐私时。例如,使用OpenID或其他东西进行身份验证。我很喜欢它的简单性。我创建了一个小程序来查看lightopenId的使用情况。通过使用,它简化了OpenID的使用。当您使用OpenID时,您也使用安全的OpenID提供程序。密码也不会以明文形式通过网络传输,而是受https/SSL保护

只有注册用户才能在网站上操作,并且只能在 某些数据和文件。用户存储在$\u会话变量中

是的,这就是课程的目的

大多数页面实现了一种基本的权限控制, 但是一些重要的DB操作是通过AJAX调用的

你至少应该仔细阅读一下。(不要在10点停止。

AJAX安全性的实现非常糟糕,任何一个如此聪明的人都是如此 可以篡改发送任意id的请求并删除 记录极其简单


见上一节。至少阅读OWASP前10部分。例如,许多人忽视的一些事情是。

+1这可能会让OP感到震惊,但即使是常规的“非AJAX”请求也可以得到完美的处理。绝对不是。对于那些我已经采取了措施(解决SQL注入、数据过滤和权限问题)。我担心的是AJAX是否会打开新的场景来处理。@cravo:与其试图阻止某些类型的“场景”,不如使用常见的