2011-10-02 117 views
2

我的问题是,假设在我的web应用程序中,我使用ajax调用服务器端的方法,是不是在应用程序中创建安全漏洞?比如说,我可以选择让用户停用该帐户,这可以通过点击按钮来完成。这是通过Ajax完成的。Ajax,PHP和安全性?

那么,黑客不能向服务器发送请求来取消激活帐户而不是用户? 帮助!

回答

1

我的问题是,假设在我的web应用程序中,我使用ajax调用服务器端的方法,是不是在应用程序中创建安全漏洞?

从安全角度来看,涉及JavaScript的HTTP请求与不涉及JavaScript的HTTP请求(例如使用常规表单或手工制作的)之间没有区别。

...但您不能从客户端调用方法,只能向URI请求。服务器可能会根据接收到对特定URI的请求来调用方法。

那么,黑客不能向服务器发送请求来取消激活帐户而不是用户吗?

他们可以,这就是为什么你需要(守信)认证/授权和CSRF保护(就像你的请求,禁止不涉及Ajax的帐户)。

0

这不仅仅是AJAX的问题,而是任何想要认证/维护会话的任意HTTP请求。用户需要以某种方式进行身份验证才能发出请求,这通常是通过cookie完成的。使用AJAX并不会使问题变得更糟,尽管它仍然是一个HTTP请求。

虽然只有身份验证是不够的,但有人可以一直在线上监听并捕获身份验证cookie,从而获得会话 - “成为你”。此处唯一的解决方案是在较低的OSI图层级别(使用SSL/TLS)加密连接。这就是为什么当涉及到身份验证时,您总是应该使用SSL。

0

这个Ruby on Rails security guide对如何处理可能被利用的AJAX请求有很好的解释。它不是特定于RoR,因此这些概念可以应用于任何平台。

降低跨站请求风险的一种方法是使用POST来修改或删除数据的操作。

+0

POST应该用于防止意外修改/删除数据...但它不提供任何针对CSRF的重要保护。 – Quentin