将点击劫持网站重定向到您的网站是可接受的解决方案吗?(因此,当您跳出框架时,您现在正在显示您的网站)让我们说您看到点击此处赢得 ipad 点击劫持网页。但是,当您在 2 秒内立即访问该网站时,您将被带到黑客希望您点击劫持的原始网站。所以现在你看不到 iframe 并点击这里 ipad 网页。哪个更好(更安全)退出 iframe 并重定向到您的网站或留在免费 ipad 页面上而不在 iframe 上显示您的网站?
2 回答
只需将X-Frame-Options: DENY
标头添加到您的响应中并让 HTTP 处理它。
https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
使用 X-Frame-Options 响应标头进行防御
X-Frame-Options HTTP 响应标头可用于指示是否应允许浏览器在<frame> or <iframe>
. 网站可以使用它来避免点击劫持攻击,方法是确保其内容不会嵌入到其他网站中。为所有包含 HTML 内容的响应设置 X-Frame-Options 标头。可能的值为“ DENY
”、“ SAMEORIGIN
”或“ ALLOW-FROM uri
”
X-Frame-Options 标头类型
X-Frame-Options 标头有三个可能的值:
DENY
,这可以防止任何域构建内容。DENY
除非确定了特定的取景需要,否则建议使用“ ”设置。SAMEORIGIN,只允许当前站点框出内容。
ALLOW-FROM uri
,它允许指定的 ' uri
' 框住这个页面。(例如,ALLOW-FROM http://www.example.com
)检查限制 如果浏览器不支持,则以下内容将无法打开。其他浏览器支持新的 CSP frame-ancestors 指令。少数支持两者。
window.confirm() 保护
使用 x-frame-options 或分帧脚本是一种更安全的点击劫持保护方法。但是,在内容必须是可框架化的情况下,可以使用 window.confirm() 通过通知用户他们将要执行的操作来帮助减轻点击劫持。
调用window.confirm()
将显示一个无法框住的弹出窗口。如果window.confirm()
源自与父级不同域的 iframe,则对话框将显示window.confirm()
源自哪个域。在这种情况下,浏览器会显示对话框的来源,以帮助缓解 Clickjacking 攻击。应该注意的是,Internet Explorer 是唯一不显示 window.confirm() 对话框源自的域的已知浏览器,要解决 Internet Explorer 的这个问题,请确保对话框中的消息包含有关正在执行的操作类型。例如:
<script type="text/javascript">
var action_confirm = window.confirm("Are you sure you want to delete your youtube account?")
if (action_confirm) {
//... perform action
} else {
//... The user does not want to perform the requested action.
}
</script>