Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 是否可以设置或修改;“起源”;https请求中的头?_Html_Security_Cross Domain_Hmacsha1 - Fatal编程技术网

Html 是否可以设置或修改;“起源”;https请求中的头?

Html 是否可以设置或修改;“起源”;https请求中的头?,html,security,cross-domain,hmacsha1,Html,Security,Cross Domain,Hmacsha1,我正在构建一个网页,该网页将使用iframe嵌入到第三方网站上。启动通信不需要登录服务,因此我无法管理任何会话令牌 因此,我计划验证https请求的origin头,以检查请求是否来自预期的源。这个外部网站不在我的控制范围内,但我可以要求他们进行一些更改以实现安全通信 我有两个问题: 是否有可能在https请求中恶意设置或修改“origin”头?或者它总是由浏览器本身设置的 因为我对origin头提供的安全级别不是很确定,所以我也计划使用HMAC-SHA256。外部站点应该为每个请求生成一个唯一的

我正在构建一个网页,该网页将使用iframe嵌入到第三方网站上。启动通信不需要登录服务,因此我无法管理任何会话令牌

因此,我计划验证https请求的
origin
头,以检查请求是否来自预期的源。这个外部网站不在我的控制范围内,但我可以要求他们进行一些更改以实现安全通信

我有两个问题:

  • 是否有可能在https请求中恶意设置或修改“origin”头?或者它总是由浏览器本身设置的

  • 因为我对
    origin
    头提供的安全级别不是很确定,所以我也计划使用HMAC-SHA256。外部站点应该为每个请求生成一个唯一的编号,并使用密钥对其进行签名


  • 因此,如果我实现了上述两件事,还有什么我应该担心的吗?

    浏览器是否设置/保证了这一点并不重要。攻击者不必使用浏览器-源标题并不比Referer标题更适合这种情况,即“使用风险自负”。(我不确定散列的方法应该解决什么问题。但是如果客户端生成它,它就不是一个安全的资源。)@user2864740:是的,同意“origin”头。这不是真的有用。使用HMAC,我将为请求签名与服务器端生成的签名相匹配的请求提供服务。由于攻击者不知道生成有效HMAC签名所需的密钥,因此我受到了很好的保护。当然,攻击者仍然可以发送请求,但由于签名不匹配,因此无法为其提供服务。最好以纯文本形式发送访问密钥/nonce,否?是的,公平点。很多文章都建议这样做,但我看不到发送访问id有任何附加值。据我所知,Nonce用于防止重播或重新传输消息。在我的情况下,请求中必须有一个唯一的数字,它也是签名的一部分。所以我认为这个唯一的数字对我来说是“暂时的”,只要它不能被猜测,并且有一个受控的(例如,一次使用或时间限制)寿命。