【发布时间】:2019-11-07 18:33:33
【问题描述】:
我们的客户使用如下代码使用我们的免费服务:
<script type='text/javascript'>id='example'; width='640'; height='480';</script><script type='text/javascript' src='http://example.com/example.js'></script>
example.js 看起来像这样:
if (typeof (width) == "undefined") {
var width = '100%';
}
if (typeof (height) == "undefined") {
var height = '100%';
}
if (typeof (p) == "undefined") {
var p = '0';
}
if (typeof (c) == "undefined") {
var c = '0';
}
if (typeof (stretching) == "undefined") {
var stretching = 'uniform';
}
document.write('<iframe allowfullscreen width="' + width + '" height="' + height + '" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowtransparency="true" src="http://example.com/examplefile.php?id=' + id + '&p=' + p + '&c=' + c + '&stretching=' + stretching + '"></iframe>');
问题是人们正在窃取 examplefile.php。我们尝试将 secure_link 与 nginx 一起使用,效果很好,但仅适用于能够在其站点中使用 PHP 代码、生成带有密钥的随机安全令牌的客户端。其他一些客户端只能嵌入 HTML 代码。有没有办法保护 examplefile.php 或者随机更改 examplefile.php 名称,并针对我们的服务器进行验证以停止盗取?
也许使用 jQuery?我们需要能够确保 examplefile.php 是由此 JavaScript 代码开始调用的,而不是作为来自外部站点的 iframe 手动添加的。
【问题讨论】:
-
如果客户端的服务器只有静态内容——没有办法让它真正安全。你甚至可以在 nginx 中使用某种白名单,哪个域可以 iframe 你的页面(Content-Security-Policy),但这很容易破坏。您的一位客户可能会对您不利吗?如果客户只能伤害自己——也许我能找到解决办法。但是,如果客户可能是那个坏人,并且将他的“密码”提供给其他人使用您的服务 - 就没有办法保证它的安全。那么 - 可以给用户“帐户”而不用担心他们将如何使用它?
-
是的,这是一个选项。看起来我必须实施一个帐户系统,如果我这样做,你有什么想法?
-
我已经工作了太多小时......对于任何不清楚的句子提前抱歉;)我的想法现在只是想法 - 我什至没有测试它,但我认为它可以工作。我会把它写成答案,因为它太长了,无法评论。
-
好的,也许在这里。恐怕我的想法是错误的。至少——它有点复杂。但它的第二个核心是
$_SERVER['HTTP_REFERER']。只是这太弱了,但如果有其他墙,它就足以保护大多数人了。 -
我很想看看你的想法。你把它写成答案了吗?谢谢
标签: javascript php jquery html nginx