我不知道标题是否足够清楚,无论如何我需要做的很简单:我有一些内容可以通过我的服务器上的API调用访问;此内容与用户相关,因此当您请求访问时,您必须先等待所有者授权您。由于此内容可能嵌入到博客文章或表单帖子中,我希望它只能从用户授权的URL访问。
我想到的唯一方法就是以一种安全的方式检查请求的来源:这种方法的问题是,任何人都可以使用有效的URL创建虚假请求,但来自未经授权的实际上是URL。
我正在寻找解决此问题的方法,即使这不涉及检查实际的URL但使用其他方法或其他方法。如果不够清楚,请随时提出任何问题。
答案 0 :(得分:0)
使用会话
如果您生成安全令牌,大多数语言都有库来执行此类操作,您必须将其保留在服务器上的会话中。当您呈现将访问其他内容的页面时,您可以将该标记添加到您希望能够从中访问它的页面上的链接/表单post / ajax请求。
然后,如果令牌不匹配,您将匹配该用户会话中的值与您返回某种错误。此解决方案依赖于会话的安全性。
没有会话:
如果您没有可以绕过服务器持久性的会话,您可以使用亚马逊s3用于安全的技巧。您可以创建类似json字符串的内容,在接下来的30秒,5分钟内授予适当的授权。它需要包含一个时间戳,以便值发生变化。您将在服务器上使用与JSON字符串组合的密钥来创建哈希值。
您的请求必须包含JSON字符串作为一个请求参数。您需要对其进行base64编码或其他方法,以便不会遇到不允许通过http的特殊字符。第二个参数是哈希操作的输出。
当您收到请求时,您将解码JSON字符串,使其与之前完全相同,并使用您的密钥对其进行散列。如果该值与随请求一起发送的值匹配,则表示这些值是您发送到最终请求内容的页面的两个值。
<强>警告:强>
您需要确保使用最新算法和经过适当审核的安全库来执行此操作,不要尝试编写自己的算法。可能有其他方法可以解决这个问题,具体取决于最终的最终结果,但我认为它应该相对安全。此外,我不是安全专家,如果您处理的是非常敏感的信息,我会咨询一下。