如何验证/保护/验证基于JavaScript的POST请求?
我正在帮助开发的产品基本上是这样工作的:如何验证/保护/验证基于JavaScript的POST请求?,javascript,security,authentication,cross-domain,jsonp,Javascript,Security,Authentication,Cross Domain,Jsonp,我正在帮助开发的产品基本上是这样工作的: Web发布者在其网站上创建一个新页面,其中包含来自我们服务器的 当访问者到达新页面时,收集页面的文本内容,并通过POST请求将其发送到我们的服务器(跨域,使用内部的) 我们的服务器处理文本内容并返回一个响应(via),其中包括一个HTML片段,列出了指向Web上相关内容的链接。此响应被缓存并提供给后续访问者,直到我们从同一URL收到另一个包含文本内容的POST请求,此时我们重新生成一个“新鲜”响应。这些帖子只有在缓存的TTL过期时才会发生,此时服务器会
- Web发布者在其网站上创建一个新页面,其中包含来自我们服务器的
- 当访问者到达新页面时,
收集页面的文本内容,并通过POST请求将其发送到我们的服务器(跨域,使用
内部的
) - 我们的服务器处理文本内容并返回一个响应(via),其中包括一个HTML片段,列出了指向Web上相关内容的链接。此响应被缓存并提供给后续访问者,直到我们从同一URL收到另一个包含文本内容的POST请求,此时我们重新生成一个“新鲜”响应。这些帖子只有在缓存的TTL过期时才会发生,此时服务器会指示并提示页面上的
收集并再次发布文本内容
有什么想法吗?我希望我已经把这个问题解释得足够清楚了。提前感谢您的建议。如果您可以向站点添加服务器端代码,将数据推送到您的站点,那么您至少可以使用MAC阻止未登录用户发送任何内容 如果只允许任何人使用该页面,那么我想不出一种防水的方法来确认数据,而不刮去网页。你可以使用referer检查之类的方法让发送任意内容变得更加困难,但并非100%不可能。怎么样:
站点A创建一个nonce(基本上是一个随机字符串),将其发送到站点B,站点B将其放入会话中。然后,当站点A从站点发出POST请求时,它会将nonce与请求一起发送,并且只有当nonce与站点B会话中的nonce匹配时,请求才会被接受。根据每个域为用户提供密钥 让人们在请求中包含[key string+请求参数]的散列值。(哈希值应在服务器上计算)
当他们向您发送请求时,您知道参数和密钥,可以验证有效性。您可以将散列密钥指定给每个客户端IP地址,并使用post标头中的IP在服务器上比较每个post的值。这样做的好处是,如果有人欺骗他们的IP,响应仍将发送到欺骗的IP,而不是攻击者的。你可能已经知道这一点,但我也建议在你的哈希表中添加盐 使用伪造的IP,无法进行正确的TCP握手,因此攻击者伪造的post无法完成
可能还有其他我不知道的安全问题,但我认为这可能是一个选项web发布者是否也可以在其服务器上放置代理页 然后通过代理加载脚本。然后,您可以控制两台服务器之间的连接,添加加密等
什么是登录系统?使用SSO解决方案并保持脚本的独立性如何?正如您所描述的,系统的主要缺点是您“获得”了页面内容,为什么不自己去获取页面内容呢
这可以阻止恶意内容被“馈送”到您的服务器,并允许您提供某种形式的API密钥,将请求和域或页面联系在一起(即API密钥123仅适用于mydomain.com上的引用者-其他任何内容都显然是伪造的)。由于缓存/代理,您的应用程序在某种程度上受到保护,不受任何形式的DOS类型攻击,因为每次缓存TTL过期时,页面内容只处理一次(现在您可以通过扩展TTL来处理不断增加的负载,直到可以启用额外的处理功能)。现在,您的客户端脚本非常小和简单—不再需要刮取内容并发布它—只需发送一个ajax请求,并可能填充几个参数(api键/页面)。您可以刮取站点,如果您得到包含脚本的代码200响应,只需使用该刮取即可。如果不是的话,你可以从你的“客户代理”那里获取信息,这样的话,问题就落在你无法抓取的网站上了 为了提高这些情况下的安全性,您可以让多个用户发送p