Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測(cè)方法
https可以徹底解決劫持的問(wèn)題。但是一般虛擬主機(jī)都不支持 https,難道http只能任流氓們惡意劫持么?
既然只有第一次訪問(wèn)時(shí)才會(huì)出現(xiàn)抽獎(jiǎng)鏈接,通過(guò)JS在瀏覽器中檢測(cè),如果發(fā)現(xiàn) 被植入的 代碼,則自動(dòng)刷新網(wǎng)頁(yè),就可以解決被劫持的問(wèn)題了。
現(xiàn)在要做的就是得到 被植入的代碼。找了一圈,沒有找到檢查的工具。網(wǎng)站傳輸?shù)娇蛻舻臑g覽器,需要三個(gè)步驟:【1】服務(wù)器 -> 【2】運(yùn)行商 -> 【3】客戶瀏覽器。
劫持出現(xiàn)在第【2】步,因?yàn)殡x開了服務(wù)器,已經(jīng)不受控制了。但是第【3】部的瀏覽器可以通過(guò)JS來(lái)控制。通過(guò) Ajax 上傳 客戶最終獲取到的代碼,就可以對(duì)進(jìn)行分析了。
運(yùn)行效果如下:

<?php
//根據(jù)訪問(wèn)域名,創(chuàng)建不同的目錄
$log_path = $_SERVER['SERVER_NAME'];
if( !is_dir($log_path) ){
mkdir($log_path);
}
//根據(jù)訪客IP,分別記錄
$log_path .= '/' . $_SERVER['REMOTE_ADDR'];
if( !is_dir($log_path) ){
mkdir($log_path);
}
//按天分組
$log_path .= '/' . date('Y-m-d', time());
if( !is_dir($log_path) ){
mkdir($log_path);
}
//根據(jù)時(shí)間生成文件名
$log_file = $log_path . '/' . date('His', time()) . '_' . rand() . '.html';
//保存日志
$html = '';
$html .= 'URL:/' . post('url') . '<hr>';
$html .= 'HEAD:<br><textarea cols="200" rows="40">' . post('head') . '</textarea><hr>';
$html .= 'BODY:<br><textarea cols="200" rows="40">' . post('body') . '</textarea>';
file_put_contents($log_file, $html);
die('{"help":"http://www.miaoqiyuan.cn/p/browser-page-tracert/","log_file":"' . $log_file . '"}');
//調(diào)用的函數(shù)
function post($input){
$post_str = isset($_POST[$input]) ? $_POST[$input] : '';
$post_str = str_replace('\\', '', $post_str);
$post_str = iconv_substr($post_str, 0, 50000); //防止惡意上傳假日志
return $post_str;
}
?>
調(diào)用很簡(jiǎn)單,比如將 上邊的php代碼保存到了 /log/page_tracert.php,然后在整站頁(yè)面中都加入 以下的代碼,就可以獲取到 所有的訪問(wèn)記錄了。根據(jù)訪問(wèn)記錄,得到 被植入的代碼后,就可以進(jìn)行檢測(cè)腳本的開發(fā)了。
$(function(){
$.post('/log/page_tracert.php',{
url : location.href,
head : $('head').html(),
body : $('body').html(),
},function(){});
});
注意:得到數(shù)據(jù)后,一定要盡快刪除 測(cè)試代碼。因?yàn)樗麜?huì)產(chǎn)生大量的日志,產(chǎn)生虛擬主機(jī)雙倍的流量消耗。
總結(jié)
以上所述是小編給大家介紹的Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測(cè)方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Ajax實(shí)現(xiàn)無(wú)刷新三聯(lián)動(dòng)下拉框
Ajax實(shí)現(xiàn)無(wú)刷新三聯(lián)動(dòng)下拉框...2007-04-04
django使用ajax post數(shù)據(jù)出現(xiàn)403錯(cuò)誤如何解決
在django中,使用jquery ajax post數(shù)據(jù),會(huì)出現(xiàn)403的錯(cuò)誤,該如何解決呢?下面由腳本之家小編幫大家解決django使用ajax post數(shù)據(jù)出現(xiàn)403錯(cuò)誤,需要的朋友可以參考下2015-09-09
ajax 自動(dòng)完成下拉框 自動(dòng)提示位置問(wèn)題
ajax 自動(dòng)完成下拉框 自動(dòng)提示位置問(wèn)題...2007-02-02
原生AJAX封裝的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇原生AJAX封裝的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
IE6中ajax aborted錯(cuò)誤請(qǐng)求中斷解決方法
給a標(biāo)簽綁定了一個(gè)click事件用來(lái)觸發(fā)ajax請(qǐng)求,在IE6中,請(qǐng)求時(shí)常會(huì)被中斷,在其他瀏覽器中都一切正常,具體解決方法如下,感興趣的朋友可以參考下2013-06-06
ajax獲取php頁(yè)面的返回參數(shù),控件賦值的方法
下面小編就為大家?guī)?lái)一篇ajax獲取php頁(yè)面的返回參數(shù),控件賦值的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
Ajax 表單驗(yàn)證 實(shí)現(xiàn)代碼
最近做了一個(gè)項(xiàng)目中的登錄注冊(cè)模塊,大部分功能從一個(gè)網(wǎng)站里扣出來(lái)的,部分功能自己修改,自認(rèn)為還是有點(diǎn)人性化的2009-05-05
Ajax+PHP簡(jiǎn)單基礎(chǔ)入門實(shí)例教程
Ajax 由 HTML、JavaScript™ 技術(shù)、DHTML 和 DOM 組成,這一杰出的方法可以將笨拙的 Web 界面轉(zhuǎn)化成交互性的 Ajax 應(yīng)用程序。對(duì)于Ajax,最核心的一個(gè)對(duì)象是XMLHttpRequest,所有的ajax操作都離不開對(duì)這個(gè)對(duì)象的操作。2008-12-12
ajax實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面
這篇文章主要為大家詳細(xì)介紹了ajax實(shí)現(xiàn)簡(jiǎn)單登錄頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06

