[我希望这个问题不要太宽泛,我认为这个主题非常有趣,但我鼓励你告诉我这是否违反了政策。]
我的场景是:
- 我有一个LAMP网站,它也存储敏感数据和文档
- 只有注册用户才能在网站上操作,并且只能对某些数据和文档进行操作。用户存储在$_SESSION变量中
- 大多数页面都实现了一种基本的权限控制,但一些重要的DB操作是通过AJAX调用的
- AJAX安全性的实现非常糟糕,因为任何聪明的人都可以篡改发送他们喜欢的任何id的请求,并以极其简单的方式删除记录
要求一本完整的关于安全的书显然有点太多了(我已经在阅读并尝试了很多关于这个主题的内容(,我主要担心的是AJAX页面是否应该受到特殊对待,因为我需要保护整个软件以防止黑客攻击和其他问题。
让我们说,我主要关心的是AJAX页面是否应该被特殊对待
不是。他们应该得到与任何其他请求几乎完全相同的待遇所有HTTP请求都来自您的系统外部,并在客户端的控制下(因此或多或少可以由用户可以想象的任何内容组成(。
您可能返回JSON,可能返回完整的HTML文档,可能返回XML——但格式无关紧要,数据重要。
如果请求是敏感数据,那么您需要(在服务器上(对用户进行身份验证,然后确保他们有权查看/编辑该数据。
唯一的区别是你如何展示"你没有被授权"的信息。当您期望浏览器将数据加载到XHR时,您不能简单地返回带有登录表单的HTML文档。响应需要适当格式化,JavaScript需要能够处理它。
我有一个LAMP网站,它也存储敏感数据和文件
您应该尽可能少地存储敏感数据。尤其是当您不确定如何保护这些信息的安全/隐私时。例如,使用OpenID或其他东西进行身份验证。我真的很喜欢LightOpenID,因为它很简单。我创建了一个小的示例项目/库来查看lightopenId的使用情况。它通过使用OpenID选择器简化了OpenID的使用。当您使用OpenID时,您也使用安全的OpenID提供程序,密码也不会以明文形式通过网络传输,而是受到https://SSL的保护。
只有注册用户才能在网站上操作,并且只能在某些数据和文件。用户存储在$_SESSION变量中
是的,这就是会议的目的。
大多数页面实现一种基本的权限控制,但是一些重要的数据库操作是通过AJAX 调用的
你应该读一下OWASP的前十名。至少(不要在10时停止。(
AJAX安全性的实现非常糟糕,就像任何聪明的人一样可以篡改发送他们喜欢的任何id的请求并删除简单粗暴的记录
请参阅上一节。至少阅读OWASP前10部分。例如,许多人忽视的一些事情是CSRF。