2010-06-22 85 views
5

刚才我正在写一个项目,并且我打算用jqueryajax的请求编写它。AJAX请求的安全

唯一的事情,我不知道,它足够安全吗?

例如,当我验证用户名,登记新用户时,使用jQuery AJAX请求,

我得到现有用户名的阵列从分贝(使用JSON),然后验证,如果new_username不​​现有的username s,我提出另一个请求,并注册用户。

但是安全呢? meybe黑客可以找到方法来改变我的一些if-else声明,并且整个我的securite会刹车。

也许你会帮我理解这种情况?

感谢

+1

非常感谢有趣的讨论。也许你知道更改客户端脚本的方法?有没有一个工具呢? – Simon 2010-06-22 17:08:33

回答

6

你为什么要实施该客户端的任何

您应该通过HTTPS在AJAX查询中发送用户名/密码,并让服务器仅响应用户所需的数据,而不是整个用户名单。

即使把安全放在一边,如果你有数百万用户呢?你将把这个列表发送给所有的客户端以供他们登录?

+0

即使使用HTTPS,我也不会将整个列表发送给用户;如果访问者可以查看该列表(使用任何工具),他们可以看到谁在您的网站上注册。而且,不要单纯依靠客户端验证;很容易绕过JavaScript。 – 2010-06-22 16:47:22

+0

这只是一个例子,我只是试图从安全的角度来理解jquery的工作(对于英语错误,抱歉) – Simon 2010-06-22 16:47:52

+2

请记住,您在客户端上做的任何事情都可以被用户修改和查看。无论何时您需要执行安全操作,您都需要验证服务器。 – 2010-06-22 16:53:48

12

(在我认为,该username是,用户可以登录ID,而不是某种昵称以下;))

  1. 让所有的用户名作为JSON是坏。然后攻击者立即获取所有注册用户名
    只需将用户名发送到服务器,在那里验证并发送“有效”或“无效”作为响应。即,检查服务器端的可用性。

  2. 总是验证服务器端的用户输入。 JavaScript可以被禁用。

更新:

不要紧的jQuery是否参与与否。您发送给客户端一切(而不是散列加密可以由客户端读取,没关系它是否是一个XMLHttpRequest或“正常”的要求。

你会发送一个包含所有用户名的HTML表格给你网站的任何访问者吗?我希望不会:)


摘要:

  • 仅发送数据,客户端被允许访问。
  • 验证服务器端的用户输入。
  • 绝不信任用户输入。
+2

对于HTML表格+1! :D – 2010-06-22 16:51:43

+0

不,我发送它作为一个列表,而不是表格:D – Simon 2010-06-22 16:53:37

+0

顺便说一句,我知道很多网站发送所有用户名到访问者;它在很多论坛上都被称为“成员名单”。 [即使是SO](http://stackoverflow.com/users);-) – 2010-06-22 16:55:41

2

如果可能的话,安全性就是服务器端最好的做法之一。我的典型AJAX登录方法是将用户名和MD5或SHA1哈希密码发送到服务器上的一个方法,然后该方法将处理所有登录详细信息。该实现的细节将取决于您的服务器端技术,但大多数Web应用程序框架都有相应的功能。甚至可能会有一些解决方案包含Javascript库来处理客户端工作。

5

Ajax不是服务器端代码的替代品。虽然可以使用ajax实现登录和注册功能,但您仍然需要在服务器上验证和存储数据。

一个更加理智的实现方法就是简单地向服务器发送https请求,其中包含服务器以yay或nay响应的用户名和密码。

+0

Ajax不是服务器端代码的替代品<<< THIS !!! – Incognito 2010-06-23 15:51:56