Javascript 验证客户端应用程序标识-客户端位于浏览器中
我有用PHP编写的后端(实际上我想这并不重要)。 我用Javascript编写了客户端,它在浏览器中启动 应用程序的工作方式如下:Javascript 验证客户端应用程序标识-客户端位于浏览器中,javascript,php,ajax,security,Javascript,Php,Ajax,Security,我有用PHP编写的后端(实际上我想这并不重要)。 我用Javascript编写了客户端,它在浏览器中启动 应用程序的工作方式如下: 用户访问url地址并获取用于呈现数据的原始模板 通过ajax,GET查询被发送到后端服务器,查询数据以填充原始模板。响应作为有效的JSON返回 在这两个请求发生之后,我可以打开控制台并重新发送最后一个ajax查询。我可以复制所有参数并轻松地从JSON获取数据 我对这种情况感到不高兴。 我想通过应用程序找出查询的来源 我想到在后端生成某种一次性令牌。在步骤1中将其交给
谢谢您所说的是一个“nonce”的缩写,表示曾经使用过的数字。您可以在第一次加载页面并将其添加到任何请求时在javascript中进行设置。您可以将其存储在服务器上的会话中,以便验证它是否与预期的相同。来自服务器的每个响应都需要包含一个新的nonce,并且在响应处理程序中,您需要更新脚本中的nonce集
如果您有很多可以并行发送的请求,那么您可以存储一个nonce数组,并在获取它们时在服务器上使它们无效。您所说的是“nonce”,是一次使用的数字的缩写。您可以在第一次加载页面并将其添加到任何请求时在javascript中进行设置。您可以将其存储在服务器上的会话中,以便验证它是否与预期的相同。来自服务器的每个响应都需要包含一个新的nonce,并且在响应处理程序中,您需要更新脚本中的nonce集
如果您有许多可以并行发送的请求,您可以存储一个nonce数组,并在获取它们时在服务器上使其无效您可以应用移动应用程序中常用的解决方案:使用一些难以复制的签名对您的请求进行签名。将当前时间和随机值添加到请求中,并将salt添加到签名中。将签名放入HTTP头。混淆你的JS代码 签名可能类似于
md5(“salt”+method+url+params+body+sessionId)
params
应包含当前时间和随机值以及所需的其他参数。
在后端,再次计算签名并拒绝没有有效签名的请求 您可以应用移动应用程序中常用的解决方案:使用一些难以复制的签名对您的请求进行签名。将当前时间和随机值添加到请求中,并将salt添加到签名中。将签名放入HTTP头。混淆你的JS代码 签名可能类似于
md5(“salt”+method+url+params+body+sessionId)
params
应包含当前时间和随机值以及所需的其他参数。
在后端,再次计算签名并拒绝没有有效签名的请求 这么多的
I
和I
。。。我所能建议的就是你在整个过程中添加一个CSRF令牌,如果数据是敏感的,或者你不希望它被刮掉,那么让他们登录。对不起,我不是本地人。这是一种糟糕的措辞吗(你建议在哪里阅读好的措辞)?CSRF afaik用于表单保护…滚动CSRF令牌“样式”方法可用于“允许”基于上一个请求的后续请求,因此设置令牌加载内容,设置新令牌,在下一个请求中将其作为标头发送,依此类推。。如果刷新同一个请求,则令牌将出错..太多的I
和I
。。。我所能建议的就是你在整个过程中添加一个CSRF令牌,如果数据是敏感的,或者你不希望它被刮掉,那么让他们登录。对不起,我不是本地人。这是一种糟糕的措辞吗(你建议在哪里阅读好的措辞)?CSRF afaik用于表单保护…滚动CSRF令牌“样式”方法可用于“允许”基于上一个请求的后续请求,因此设置令牌加载内容,设置新令牌,在下一个请求中将其作为标头发送,依此类推。。如果刷新相同的请求,则令牌将出错。。