点击劫持:故名思议、是靠鼠标点击来完成的、劫持:是违背用户意愿。

图

当点击输入框的时候、隐藏后面实际是一个操作,(提交数据、登录等操作),

对网站代码更改一下然后截图。

图

现在就能看出来后面是什么了,后面就是一个嵌入的网站。代码是这样的

<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>csrf demo</title>
    </head>
    <body style="background:url(clickhijack.png) no-repeat">
        <iframe style="opacity:0.5" src="http://dong.t.cn/admin/login/index.html" width="700" height="400"></iframe>
    </body>
</html>

点击劫持的防御

点击的劫持的原理:是将目标网站做为一个iframe放到攻击网站中、把透明度设置为0,并进行引导。

那么防御的方法:就是禁止其他网站的嵌入。

方法1:JS方式禁用

对象

在不引入iframe中top和window对象是相等的

if(window.location!==top.location){
//跳转
}

这个方法不是100%的在html5中的iframe加了一个属性sandbox

sandbox="allow-forms"

设置这个后

iframe

JS和一些CSS字体虽然不能使用了 、但是正常的post表单还是可以提交的。

方法2 :http头 X-FRAME-OPTIONS 禁止内嵌

X-Frame-Options DENY 禁止网站内嵌

图

PHP代码

header("X-Frame-Options:deny");

其他辅助防御

如验证码、提升用户输入门槛等方式

Last modification:February 10, 2020
如果觉得我的文章对你有用,请随意赞赏