繁体   English   中英

这个AJAX场景中最好的安全指南是什么,特别关注身份验证?

[英]What are the best security guidelines in this AJAX scenario, with special regards to authentication?

[我希望这个问题不是太广泛,我认为这个问题有意思,但我不鼓励你告诉我它是否是政策性的。]

我的情况是这样的:

  • 我有一个LAMP网站,它还存储敏感数据和文档
  • 只允许注册用户在网站上操作,并且只允许在某些数据和文档上操作。 用户存储在$ _SESSION变量中
  • 大多数页面实现了一种基本的权限控制,但是一些重要的数据库操作是通过AJAX调用的
  • AJAX安全性的实现非常糟糕,因为任何聪明的人都可以篡改发送他们喜欢的任何id的请求并删除残酷简单的记录

要求一本关于安全性的完整书籍显然有点太多了(我已经在阅读并尝试了很多关于这个主题的内容),让我们说我的主要关注点是AJAX页面是否应该得到特别的关注,因为我需要保护整个软件以防止黑客攻击和其他问题。

让我们说我的主要关注点是AJAX页面是否应该得到特别的关注

并不是的。 它们应该被视为与任何其他请求几乎完全相同。 所有 HTTP请求都来自您的系统外部并且受客户端的控制(因此可以包含或多或少地包含用户可以想象的任何内容)。

您可能正在返回JSON,您可能正在返回一个完整的HTML文档,您可能正在返回XML - 但数据无关紧要,数据也是如此。

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

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

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

您应该尽可能少地存储敏感数据。 特别是当您不确定如何保护此信息安全/私密时。 例如,使用OpenID或其他东西进行身份验证。 我非常喜欢LightOpenID,因为它很简单。 我创建了一个小示例项目/库来查看正在使用的lightopenId。 它通过使用openID-selector简化了OpenID的使用。 当您使用OpenID时,您还使用安全的OpenID提供程序,密码也不会通过网络以纯文本形式传输,但受https / SSL保护。

只允许注册用户在网站上操作,并且只允许在某些数据和文档上操作。 用户存储在$ _SESSION变量中

是的,这就是会议的目的。

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

你应该至少阅读OWASP前10名 不要在10点停下来。

AJAX安全性的实现非常糟糕,因为任何聪明的人都可以篡改发送他们喜欢的任何id的请求并删除残酷简单的记录

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM