我偶然发现了棘手的问题。可以说我拥有一项服务,该服务仅在用户被其域列入白名单时才能访问。
因此用户可以获取要放在其网站上的链接
<script src="example.org/widget/en">
打开网站链接后,该链接就会执行,并且我的服务器会验证域是否被列入白名单。
const starter = async (req, res, next) => {
let domain = tools.getDomain(req);
if (domain === false) {
res.status(404).end();
return false;
}
const found = await client.get(domain).catch(err => { console.log("error", err) });
if (found !== undefined && found !== false && found.whitelisted !== false) {
res.setHeader("Content-type", "text/javascript");
res.charset = "UTF-8";
// send starter content
res.end();
} else {
res.status(403).end();
}
};
到目前为止,它运行良好,但是其中一个用户找到了一种绕过该方法的方法。 他所做的就是获得对他的域的访问权限,然后创建了代理服务器并与n个其他人共享访问权限。因此他们通过他的代理服务器连接到我的服务,我无法检测到该服务器端。
检测这种实践和关机服务的方法是什么?
我一直在想像在理论窗口中那样进行局部检查。位置不能被覆盖。因此,例如,一旦授予访问权限,就发送脚本检查父对象的window.location(iframe情况),然后将其发送回服务器进行第二次验证。
还是有更适当的方法来解决该问题?