【发布时间】:2019-09-24 00:11:30
【问题描述】:
我有一个 URL 可以接受 POST 数据并存储它的记录——这是用于分析的。我需要保护它免受世界上任何人的侵害,从发布到它,但是我可以使用什么可能的身份验证机制来安全地公开细节?我不认为 javascript 可以在不公开的情况下访问任何秘密数据。
我可以基于任何 HTTP 标头,但这些都可以被欺骗,对吧?
如果有帮助,客户端和服务器都是 https。
编辑:我认为我需要更明确地说明问题;对不起,我以为我可以简明扼要地解释一下,但显然没有遇到!想象一下:
https://example.com/index.html的静态页面包含一个脚本https://example.com/script.js。-
脚本向另一个远程 URL 发出请求,例如
ajax_call('https://stats.example.com/stats.php', 'some data'); -
stats.php脚本只是将'some data'写入文件
现在,缺陷是任何人都可以简单地将任何内容发布到stats.php,它会写入文件。我想将其限制为我的“客户”,即https://example.com/index.html。
如果可以的话,我会在stats.php 中做这样的事情:
if ($_SERVER["HTTP_REFERER"] == 'https://example.com') {
do_stuff();
} else {
die('not allowed');
}
但我一直认为 HTTP_REFERER(和其他类似的标头)可能只是被欺骗,所以这毫无意义。
【问题讨论】:
-
向端点提供哪种参数?
-
目前只有一个参数:url。
-
您没有与当前用户相关的任何信息?应用程序还是什么?
-
您写道:我如何保护 HTTP POST 请求不被批准的 javascript 客户端接收 b>? 是客户端接收请求还是服务器接收?或者,您的意思是对请求的响应只会发送给经过认证的客户?
-
@BobbyJack — 什么都没有。 CSRF 只会阻止攻击者欺骗第三方用户向您的网站发出请求,该请求会做坏事(例如在论坛上发布垃圾邮件)。它不会阻止攻击者直接攻击。
标签: javascript http security authentication analytics