jQuery Ajax数据发布的安全建议?

时间:2020-03-05 18:46:07  来源:igfitidea点击:

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

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

忠告不胜感激!

解决方案

回答

使用会话以确保所有Ajax帖子都在经过身份验证的上下文中完成。将Ajax代码视为服务器的另一个客户端,可以更轻松地解决身份验证问题。

回答

我们页面中的AJAX调用可以发出的任何请求也可以由应用程序外部的其他人发出。如果操作正确,我们将无法确定它们是通过Webapp还是通过手动/其他方式进行的AJAX调用的一部分。

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

如果我们担心第一种情况(有人向其他用户发布恶意数据/以其他用户身份发布),则无论我们是否使用AJAX,解决方案都是相同的-我们只需通过必要的方法(通常通过会话cookie)对用户进行身份验证。

如果我们担心第二种情况,那么我们将必须执行一些操作,例如在过程的每个步骤中发出唯一令牌,然后将期望的令牌存储在服务器端。然后,在发出请求时,请检查服务器端是否有针对正在执行的操作的相应条目,并且预期的令牌匹配并且该令牌尚未使用。如果没有,则拒绝该请求;如果存在,则将该令牌标记为已使用并处理该请求。

如果我们担心的不是这两种情况之一,那么答案将取决于比我们提供的更多的细节。