jquery ajax数据发布的安全建议?

时间:2008-09-01 20:57:12

标签: jquery ajax security post

我正在使用jquery ajax将更新发布回我的服务器。我担心确保我已采取适当的措施,以便只有我的AJAX调用才能发布数据。

我的堆栈是针对MySQL后端的Apache上的PHP。

建议非常感谢!

2 个答案:

答案 0 :(得分:28)

您的页面中AJAX调用的任何请求也可以由应用程序外部的人员进行。如果操作正确,您将无法判断它们是否是通过您的webapp或手动/其他方式进行的AJAX调用的一部分。

当您说要确保只有您的AJAX调用可以发布数据时,我可以想到您可能会想到的两种情况:要么您不希望恶意用户能够发布数据干扰其他用户的数据,或者您实际上想要将帖子限制在多请求操作的“流程”中。

如果您担心第一种情况(某人将恶意数据发布到/作为另一个用户),无论您是否使用AJAX,解决方案都是相同的 - 您只需通过任何必要的方式对用户进行身份验证 - 通常通过会话cookie。

如果你关心第二种情况,那么你将不得不做一些事情,比如在流程的每一步发出一个唯一的令牌,并将预期的令牌存储在服务器端。然后,当发出请求时,检查服务器端是否有相应的条目用于正在执行的操作以及预期的令牌是否匹配以及该令牌尚未使用。如果没有,则拒绝该请求,如果有,则将该标记标记为已使用并处理该请求。

如果您关注的是除了这两种情况之一之外的其他情况,那么答案将取决于您提供的更具体的细节。

答案 1 :(得分:5)

使用会话确保任何Ajax帖子都在经过身份验证的上下文中完成。将您的Ajax代码视为服务器的另一个客户端,以这种方式处理身份验证问题变得更加容易。