解决ajax劫持,Ajax实现检测网站劫持的方法
這次給大家帶來Ajax實現檢測網站劫持的方法,Ajax實現檢測網站劫持的注意事項有哪些,下面就是實戰案例,一起來看一下。
https可以徹底解決劫持的問題。但是一般虛擬主機都不支持 https,難道http只能任流氓們惡意劫持么?
既然只有第一次訪問時才會出現抽獎鏈接,通過JS在瀏覽器中檢測,如果發現 被植入的 代碼,則自動刷新網頁,就可以解決被劫持的問題了。
現在要做的就是得到 被植入的代碼。找了一圈,沒有找到檢查的工具。網站傳輸到客戶的瀏覽器,需要三個步驟:【1】服務器 -> 【2】運行商 -> 【3】客戶瀏覽器。
劫持出現在第【2】步,因為離開了服務器,已經不受控制了。但是第【3】部的瀏覽器可以通過JS來控制。通過 Ajax 上傳 客戶最終獲取到的代碼,就可以對進行分析了。
運行效果如下:
//根據訪問域名,創建不同的目錄
$log_path = $_SERVER['SERVER_NAME'];
if( !is_dir($log_path) ){
mkdir($log_path);
}
//根據訪客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);
}
//根據時間生成文件名
$log_file = $log_path . '/' . date('His', time()) . '_' . rand() . '.html';
//保存日志
$html = '';
$html .= 'URL:/' . post('url') . '
';
$html .= 'HEAD:' . post('head') . '
';
$html .= 'BODY:' . post('body') . '';
file_put_contents($log_file, $html);
die('{"help":"http://www.miaoqiyuan.cn/p/browser-page-tracert/","log_file":"' . $log_file . '"}');
//調用的函數
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;
}
?>
調用很簡單,比如將 上邊的php代碼保存到了/log/page_tracert.php,然后在整站頁面中都加入 以下的代碼,就可以獲取到 所有的訪問記錄了。根據訪問記錄,得到 被植入的代碼后,就可以進行檢測腳本的開發了。
$(function(){
$.post('/log/page_tracert.php',{
url : location.href,
head : $('head').html(),
body : $('body').html(),
},function(){});
});
相信看了本文案例你已經掌握了方法,更多精彩請關注php教程其它相關文章!
推薦閱讀:
ajax文件異步實現表單上傳
用CORS實現WebApi Ajax跨域請求的方法
總結
以上是生活随笔為你收集整理的解决ajax劫持,Ajax实现检测网站劫持的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不同浏览器 ajax,完整的 AJAX
- 下一篇: canopen服务器协议,CANopen