js中的点击劫持
文章类型:Javascript
发布者:hp
发布时间:2023-04-02
一:原理
点击劫持(Clickjacking)是一种常见的Web应用程序安全漏洞,也是一种社会工程学攻击方式,攻击者通过在页面上覆盖一个透明的或欺骗性的层,欺骗用户在不知情的情况下,执行一些恶意操作。
二:实现方式
1:攻击者在一个网页中嵌入一个iframe,并将iframe设置为透明或隐藏,然后将网页伪装成一个诱人的页面,比如一张图片、一段视频等,这样用户在看到这个页面时,会误以为是正常的页面,然后点击了这个页面上的按钮或链接,从而执行了攻击者想要的操作。
2:攻击者在一个网页中嵌入一个iframe,并将iframe设置为覆盖整个页面,然后将网页伪装成一个登录页面或其他交互页面,这样用户在打开这个页面时,会误以为是正常的页面,然后在这个页面上输入了用户名和密码等敏感信息,从而被攻击者盗取。
三:解决措施
1:在服务器端发送HTTP响应头,比如X-Frame-Options来限制iframe的使用。X-Frame-Options有三种值:
DENY=>设置为DENY表示页面不允许被嵌套在任何iframe中,
SAMEORIGIN=>表示页面只允许在同一域名下被嵌套,在HTTP/2中已经被弃用。
ALLOW-FROM=>允许指定的域名或URL来嵌套页面。
2:在页面中添加frame-busting代码,用于检测当前页面是否被嵌套在iframe中,如果是,则将当前窗口的地址改为一个安全的地址,比如网站的主页。
3:通过JavaScript事件模型来防止点击劫持攻击。例如,在mousedown事件中,检测鼠标的坐标是否在可视区域内,如果不在,则判定为被覆盖,从而防止恶意点击操作。
<head>
<style id="click-jack">
html {
display: none !important;
}
</style>
</head>
<body>
<script>
if (self == top) {
var style = document.getElementById("click-jack");
document.body.removeChild(style);
} else {
top.location = self.location;
}
</script>
</body>
4:避免在页面中使用iframe。如果必须使用iframe,可以使用CSP策略来限制iframe的使用,使用allowfullscreen和allowpaymentrequest属性,从而限制iframe中的交互行为。