在HTML源代码中隐藏iframe的URL

9

如何在HTML源代码中隐藏iframe的URL?

<iframe src="http://mysite.com" frameborder="0" scrolling="no" width="728" height="90"></iframe>

1
出于好奇,你为什么想要这样做? - David
我正在尝试这样做是因为在URL中有一个参数,我不想让客户端暴露出来。 - BamBam22
4个回答

13

您可以使用JavaScript来加载源代码,在页面源代码中,它不会在iframe url中显示。 例如使用jQuery:

<script type="text/javascript">
$(document).ready(function(e) {
  $('iframe').attr('src','http://www.flickr.com/');
});
</script>

<body>
<iframe src="" />
</body>

这里有个示例。

你可以和$.post结合使用来在服务器端获取值:

$.post('get-iframe-src.php', function(data) {
  $('iframe').attr('src',data);
});

您甚至可以将iframe本身加载到某个元素中,例如:

$.post('get-iframe.php', function(data) {
  $('#element_id').html(data);
});

等等,解决方案很多,这只是其中之一。


8
那不够: 当你使用jQuery或JavaScript更改iframe属性时,检查iframe的人会发现它。 - André Tzermias

8
你做不到。如果URL不在HTML中,浏览器怎么知道去哪里获取它呢?
你可以尝试一件事情,使其更难以被发现。你可以让src属性为空,然后在文档准备好后,在单独的AJAX请求中从服务器获取URL值,并将该值更新到iframe标签中的src中。
然而,这需要相当多的工作,而且实际上并没有什么用处。它只能防止某些人通过查看页面源代码找到它。他们仍然可以在任何Web浏览器的调试工具中查看HTML的“当前版本”。 (右键单击元素并检查它,这在此时几乎是普遍存在的。)或任何其他正常的流量嗅探工具都会清晰地看到它。
最终,如果Web浏览器需要知道某个信息,则该信息需要在客户端可见。

0

我决定采用不使用JavaScript的解决方案,因为大多数情况下可以读取“隐藏”的内容。

此外,使用JavaScript更改iframe SRC时,在检查源代码时会保持URL隐藏。但是,检查代码将显示真实的URL。

我的代码是用PHP编写的;然而,我相信这个逻辑可以翻译成其他编程语言。它是如何工作的:

我将iframe标记保留为通常的形式:

<iframe src="dash_url.php"></iframe>

关键在于 iframe_url.php 文件中,我会验证 referer。如果它是有效的,页面将被重定向到 iframe URL。如果不是,则 URL 将显示一条消息。
<?
$iframe_url = "https://example.com";

$Referer = @$_SERVER["HTTP_REFERER"];
$RefererHost = @explode(":", explode("/", explode("//", $Referer)[1])[0])[0];

if ($RefererHost == $_SERVER["SERVER_NAME"]) {
    header("Location: " . $iframe_url);
} else {
    echo "Invalid URL";
}
?>

如果访问者检查页面或查看源代码,iframe标签将显示SRC为dash_url.php。

0

无法完全阻止源代码查看。但有几种方法可以禁用右键点击:

1)Javascript:

<script language="JavaScript">
<!--

var message="Your message goes here.";

function click(e) {
if (document.all) {
if (event.button == 2) {
alert(message);
return false;
}
}
if (document.layers) {
if (e.which == 3) {
alert(message);
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown=click;
// -->

2) 将以下内容添加到您的标签中:oncontextmenu="return false"

参考 https://forum.powweb.com/archive/index.php/t-36161.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接