張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 第十一章 資料保護 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室.

Slides:



Advertisements
Similar presentations
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
Advertisements

《中国知识产权指数报告 2009 》 新闻发布会 1. 中国第一份 IP 指数报告 -- 探索知识产权发展与经济增长关联度 2008 年 2009 年 2.
教務處註冊組 /7 (二) 10 : 00 至 15 : 00 止 ★ 6/8 彙整報名資料後, 6/9 向高中承 辦學校報名 ★ 因校內作業時間緊迫,逾時恕不 受理。 校內報名時間.
三水区安监局 企业安全用电 2013年4月.
第六章 交际礼仪 学习目标 案例导入 主要内容 互动训练 思考练习.
性別平等教育實施成效 之 檢視與評鑑 主講人: 廖芳娟
童詩教學 爬格子工作坊 互動過程 童詩教學法 教學教案 相關資源 心得 林士翔
中国热带农业科学院科技信息研究所期刊社 2009年系列学术讲座之 科技论文的审稿及其学术评价
授課者:陳月端 法律倫理 授課者:陳月端
企业价值收益法评估 ----财务报表调整 主讲人:阮咏华 1.
三普聯合會計師事務所 講師:莊汧驊 會計師 : 中華民國103年03月10日
近年来,出现了一些制作粗糙、违背史实甚至常理的“抗战雷剧”,社会上也出现了一股“戏说”抗战剧的不良风气。
广西师范大学教科院马佳宏 电 话 0773- (O) 高校教师资格认定考试的若干事项 广西师范大学教科院马佳宏 电 话 0773- (O)
学 校 名 称: 乐山师范学院 课 程 名 称: 声 乐 学 课程层次 (本/专): 本 科 所属一级学科名称: 文 学
公文製作與品質 彰化縣政府秘書 劉玉平 中 華 民 國 104 年 7 月 31 日 .
應用文寫作規範 書信 便條 摘要 心得報告.
中学生社会适应问题及其调适.
审计案例研究 第一讲 辅导教师 周桂芝.
浪漫 碰撞 蜕变 专题八 19世纪以来的文学艺术.
德国波恩明斯特广场修建的贝多芬铜像( 1845年)
福建省毕业生就业公共网 注册流程 就业中心 二O一二年九月.
二十世纪外国文学专题 章丘电大 李颜.
初念淺~轉念深 網路~小品一則~分享.
职 业 礼 仪 讲师:刘巍女士.
支援報備之重要性.
李建民 教授 北京百川健康科学研究院 脊柱健康技术研究中心
第三讲: 如何获取和处理就业信息.
企業設置哺(集)乳室與托兒服務觀摩座談及補助說明會
國立花蓮高級工業職業學校 圖書館簡介 歡迎各位蒞臨.
课程改革呼唤科学教育 常州市教育局教研室 蔡正秋.
「一領一‧新倍加」 門徒培育教材 一領一友誼傳道 (領人系列 12).
JavaScript中常用的互動方式 認識簡單的交談與基本的運算.
网瘾的危害.
從無薪假談勞動契約條件之變更 主講人:建業法律事務所 李育錚律師.
明道大學 教師扣考系統 操作說明.
会计与财务学院 2010届毕业实习与毕业论文 学生应知注意事项.
预防老年痴呆的15个 生活习慣   背景音乐:红楼箫曲─秋窗风雨夕 文 字 资 料 来 自 网 络.
抓根本、强内涵 落实教学全过程管理 阿克苏广播电视大学 讲师 党委委员、副校长赵建胜.
國立臺灣海洋大學 【教務處】 簡報者:李國誥 教授兼教務長 中華民國98年9月23日.
三大自然区的内部差异 地理 全日制普通高级中学教科书(选修) 第二册 人民教育出版社地理社会室 编著 人民教育出版社 关于.
刘 汉 德 广东省糖业协会 广东中轻糖业集团有限公司
備審資料準備 黃思倫 教授 逢甲大學資訊電機學院 院長
臺北職安聯繫網 -新手上路.
澄清误区 探求共识 高冀生 海峡两岸大学图书馆建筑学术研讨会 高校图书馆建设理念再认识 中国图书馆学会 建筑专业委员会委员
精彩由我 精彩由我 Wonderful by My Wonderful by My.
于 雷 教育部高等职业院校人才培养工作评估研究课题组成员 沈阳工程学院教授
第一讲 JavaScript编程基础 信息学院 周宝刚.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
网络游戏对大学生生活的影响 英本1班 鞠申镅 汪晨茹 沈秋云 元文杰 段祺琪.
教育部補助公立大專校院辦理學生事務與輔導工作~ 有情天地~看見生命裡的陽光
国际关系的决定因素:国家利益 江苏省震泽中学 丛海啸.
“物理照耀世界在中国”活动工作总结.
授課大綱 第一章 緒 論 第一節 應用文的意義 第二節 應用文的種類 第二章 書 信 第一節 書信的種類 第二節 書信的結構 第三章 便 條
中国建设银行企业金融服务方案 中国建设银行广州经济技术开发区支行 2016年9月21日.
E读使用方法介绍 长春理工大学图书馆 赵耀耀.
張智星 台大資工系 多媒體檢索實驗室 第五章 自訂函數 張智星 台大資工系 多媒體檢索實驗室.
NAMO網頁製作教學簡報 講師:李惠茹.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
小结 郭清溥.
如何检索统计申请与在研项目(科研人员) “科研之友”技术支持小组
新竹縣108學年度第1次國小以上 特殊教育鑑定安置說明會
進修學院與我.
Unity回傳統計資訊程式說明: 填寫回傳資訊網址(theUrl)。
慈惠醫護管理專科學校圖書館 館際合作使用方法.
再忙也要问候你 文章:朋友传给 制作配乐:Wangyl.
指導老師:張慶寶 第13組 組員:許芙碩 郭民政 林孟璁 傅瑞翔 陳柏誠
“上海市教师教育课程资源共享管理平台” 学分银行操作指南
碩士教務介紹 時間:98年11月20日(五) 地點:資訊系館102室
反方向-R (一)專題研究基本資訊 專題研究計劃聯絡 信箱:秋雯、碗容、馥字、于婷、俊陞 專題研究名稱:種族歧視-東抗西
武汉大学博硕士学位论文 提交过程演示 武汉大学图书馆
Presentation transcript:

張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 第十一章 資料保護 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室

本章大綱 大綱 主題 網頁的資料雖然已經送到用戶端才呈現於瀏覽器,但我們還是使用JavaScript對資料進行程度不一的保護。 11-1:網址保護 11-2:網頁內容保護 11-3:程式內容保護 11-4:電子郵件隱藏

11-1:網址保護 本小節介紹基本的網址保護。

對使用者的過濾 方法 限制使用者的 IP 使用特殊的 port 需使用者進行密碼認證(最常使用)

客戶端的保護網頁 方法 使用 JavaScript 保護網頁。 防止對象 看不懂 JavaScript 的使用者 一般搜尋引擎的機器人程式 適用於:機密性不太高的網頁(只防君子、不防小人) 。 不適用於:隱密性極高的資料(應以伺服器端程式碼來保護)。

範例11-1 主題:以密碼保護的網頁(最簡單的方法) 連結:password01.htm (remote host, local host) 程式碼重點 說明 使用IF條件判斷,判斷密碼是否正確,再開視窗。 檢視原始檔即可破解此加密。 if(prompt('請輸入密碼:',"我的密碼") == "cs3431") openWin2();

範例11-2 主題:以密碼保護的網頁(帳密兩段式) 連結: password02.htm (remote host, local host) 程式碼重點 說明 使用IF判斷帳密是否正確,如都正確則開啟視窗。 檢視原始檔即可破解此加密。 if ((username!="Roger") && (username != "Jang")) … if (passwd!="cs3431")

範例11-3 主題:以密碼保護的網頁(編碼式) 連結: password03.htm (remote host, local host) 程式碼重點 說明 使用encode()自訂函式進行編碼,即使看得懂Javascript也無法解讀出目標網址。 function encode(inStr, seed){ …… }

範例11-4 主題:測驗編碼式的密碼保護 連結: passwordEncoding01.htm (remote host, local host) 程式碼重點 說明 這種編碼方式是一種簡單的「位置轉換編碼」,轉換量則根據 index^seed(index 和 seed 的 Bitwise XOR)決定。 for (var i=0; i<inStr.length; i++) { char = inStr.substring(i, i+1) index = refStr.indexOf(char) newIndex = index^seed; outStr += refStr.substring(newIndex, newIndex+1);}

11-2:網頁內容保護 本小節針對網頁內容保護作簡單的介紹。

基本網頁的保護 可做到以下六種: 典型範例參考: http://www.protware.com 不在狀態列顯示任何訊息。 取消滑鼠右鍵的預設功能。 不允許網頁上的任何文字被選取。 不允許列印。 不允許儲存。 不允許從不同的 domain 來開取此網頁。 典型範例參考: http://www.protware.com

取消滑鼠右鍵功能 原理 點選滑鼠右鍵時,會觸發 onContextmenu 事件,並顯示快顯功能表。 做法 將 onContextmenu 事件的值設為 false ,便可以取消滑鼠右鍵的功能。

範例11-5 主題:不能反白的網頁 連結: noHighlight01.htm (remote host, local host) 程式碼重點 說明 可達到的防護:不在狀態列顯示訊息、取消滑鼠右鍵的預設功能、不允許網頁上的文字被選取。 onMouseover=“window.status=‘’;return true;”:不顯示狀態列 onContextMenu=“window.event.returnValue=false” :鎖右鍵 onSelectStart=“window.event.returnValue=false” :鎖全選 onDragStart=“window.event.returnValue=false” :鎖拖曳 保護並非滴水不漏,因為不同的瀏覽器會產生不同的效果(參考資料)。 <body onMouseover=“window.status=‘’;return true;” onDragStart=“window.event.returnValue=false” onContextMenu=“window.event.returnValue=false” onSelectStart="event.returnValue=false">

11-3:程式內容保護 本小節介紹對 JavaScript 程式碼進行簡單的保護或加密。

escape() 步驟 先撰寫未加密的原始網頁 randomText.htm (remote host, local host) 利用 escapeEncodeTest01.htm 來進行 escape() 的編碼(remote host, local host)。 將編碼後的字串拷貝到加密後的網頁,然後經由 unescape() 轉回原來的程式字串,再經由 eval() 來執行。 缺點 經由 escape() 編碼後,還是可以由編碼後的字串看到諸如「function」、「square」等有意義的字,比較容易猜到程式碼的內容。

範例11-6 主題:以 escape() 來加密 連結: escapeEncode01.htm (remote host, local host) 程式碼重點 說明 經由 escape() 編碼的結果,然後經由 unescape() 得回原先字串,再由 eval() 來執行。 eval(unescape(“……………”));

範例11-7 主題:使用 escape() 與 unescape() 編碼與解碼 連結: escapeEncodeTest01.htm (remote host, local host) 程式碼重點 說明 escape() 的編碼與unescape()的解碼。 <input type=button value="使用 escape() 進行編碼" onClick="text2.value=escape(text1.value)"> <input type=button value="使用 unescape() 進行解碼" onClick="text3.value=unescape(text2.value)">

「平移編碼」(shiftEncode) 步驟 先撰寫未加密的原始網頁。(範例11-8為 randomText.htm) 利用 shiftEncodeTest01.htm 進行 shiftEncode() 的編碼。 將編碼後的字串拷貝到加密後的網頁,經由shiftEncode() 來轉回原來的程式字串,再經由 eval() 來執行。 缺點 平移過後仍有ASCII 字元,若要完全避開這些字元,可將將程式碼進行「XOR編碼」(XOR Encoding)。

範例11-8 主題:以 shiftEncode() 及 escape() 來加密 連結: shiftEncode01.htm (remote host, local host) 程式碼重點 說明 利用escape() 、 shiftEncode()編碼後,將字串拷貝到加密後的網頁,然後經由 unescape() 及 shiftEncode() 來轉回原來的程式字串,再由 eval() 來執行。 eval(shiftEncode(unescape(“……”)));

範例11-9 主題:使用 shiftEncode()、escape() 與 unescape() 來編碼與解碼 連結: shiftEncodeTest01.htm (remote host, local host) 程式碼重點 說明 利用escape() 、 shiftEncode()編碼與unescape() 來解碼。 onClick="text2.value=escape(shiftEncode(text1.value, parseInt(keyStr.value)))“ onClick="text3.value=shiftEncode(unescape(text2.value), -parseInt(keyStr.value))"

「XOR編碼」(XOR Encoding) 步驟 先撰寫未加密的原始網頁。(範例11-10為 randomText.htm) 利用 xorEncodeTest01.htm 進行 xorEncode() 及 escape() 的編碼。 將編碼後的字串拷貝到加密後的網頁,然後經由 unescape() 及 xorEncode() 轉回原來的程式字串,再由 eval() 來執行。

範例11-10 主題: XOR Encoding後再進行 escape 編碼 連結: xorEncode01.htm (remote host, local host) 程式碼重點 說明 利用xorEncode() 及 escape()編碼後,字串拷貝到加密後的網頁,然後經由 unescape() 及 xorEncode() 來轉回原來的程式字串,再由 eval() 來執行。 eval(xorEncode(unescape(“……”)));

範例11-11 主題:xorEncode()、escape()與unescape() 的編碼與解碼。 連結: xorEncodeTest01.htm (remote host, local host) 程式碼重點 說明 使用 xorEncode()、escape()編碼與 unescape() 解碼。 onClick=“text2.value=escape(xorEncode(text1.value, keyStr.value))" onClick="text3.value=xorEncode(unescape(text2.value), keyStr.value)"

範例11-12 主題:encode.js(各種編碼與解碼的函數) 連結:encode.js 說明 shiftEncode() 及 xorEncode() 的定義。

解編碼的方式 相關函數 編碼方式 解碼方式 escape() 和 unescape() escape(原字串) shiftEncode() shiftEncode(原字串, 平移量) shiftEncode(編碼後字串, -平移量) xorEncode() xorEncode(原字串, XOR字串) xorEncode(編碼後字串, XOR字串)

11-4:電子郵件隱藏 本小節介紹對 email 帳號簡單的加密。

email 帳號加密 原因 大部分廣告信的電郵來源,是經簡單的電郵搜尋程式(稱為 Spam Bots 或是 Email Harvesters ),直接搜尋開放網頁中的 mailto 或 @ 字串,再抽取出 email 帳號,導致廣告信塞爆信箱。 做法 使用影像檔案來代替 缺點:要產生圖片且無法直接點選。 改造E-mail My email is j_a_n_g@csie.ntu.edu.tw. (Please remove the underscores.)

範例11-13 主題:使用JavaScript「合成」一個email帳號 連結: emailHide01.htm (remote host, local host) 程式碼重點 說明 使用 JavaScript 合成一個電郵帳號,因為一般的 Robot無法看懂 JavaScript,就無法直接抽取這個電郵帳號。 function showEmail(user, site){ document.write('<a href=\"mailto:' + user + '@' + site + '\">'); document.write(user + ‘@’ + site + ‘</a>’); } showEmail("jang", "csie.ntu.edu.tw");

範例11-14 主題:使用shiftEncode()、xorEncode 及 escape()隱藏email 連結: emailHide02.htm (remote host, local host) 程式碼重點 說明 分別使用 escape()、shiftEncode() 以及 xorEncode() 來對電郵帳號進行保護。 本節的所有範例,因為解譯 JavaScript 需要花時間,會降低抓取電郵帳號的速度,均假設 Robots 無法解譯 JavaScript。 document.write(shiftEncode(“……", -1)); document.write(xorEncode(unescape(“……."), "abc"));