網站被跳轉到聯通域名沒法訪問頁面

早上,訪問網站正文頁面的時候,頁面加載一部分後,自動跳轉到了聯通的域名沒法訪問頁面,http://bjdnserror1.wo.com.cn:8080/issueunziped/bj140404/self0.jsp?UserUrl=world.xxx.com,javascript

發現問題後,一開始覺得是dns,可是經過分析,頻道頁,列表頁,網站首頁都沒有問題,只有正文頁面有問題;以後進行抓包,發現頁面部份內容是能夠正常加載的,加載一部分後就自動跳轉,這時就想到有多是頁面模板被篡改,問過相關人員,早上沒有進行任何修改與代碼的提交;既然沒有提交修改,又不是dns劫持的問題,那頁面模板只有廣告和其餘業務的數據致使的,經過排查頁面上的版塊,發現一個版塊引入的ssi中包含了:php

<html>
<script language=javascript type="text/javascript">
    window.location.replace("http://bjdnserror1.wo.com.cn:8080?HOST=" 
        + location.hostname + "&R="
        + location.pathname + "&" + location.search.substr(location.search.indexOf("\?")+1));
</script>

<noscript>
<meta   http-equiv="refresh"   content="0;URL=http://bjdnserror1.wo.com.cn:8080">
</noscript>
<head>
<title>Redirect</title>
</head>
<body bgcolor="white" text="black">
</body>
</html>

查看這部份內容, 這個就是致使頁面自動跳轉的緣由,那麼,爲何會出現這段代碼呢?詢問相關人員,是CMS機器上的一個定時任務抓取論壇熱點文章致使的,html

抓取部分代碼以下:java

		$url = 'http://www.fadfadsfadsf.com/a.php';//錯誤接口地址
		$content = '';
			
		$rank_info = file_get_contents($url);
		$rank_info = trim($rank_info);
		if (empty($rank_info) || stristr($rank_info,"Database Error")) return false;
		$rank_info = strrev(substr($rank_info, strpos($rank_info, '<')));
		$rank_info = strrev(substr($rank_info, strpos($rank_info, '>')));
		$rank_info = str_replace('\n', '',$rank_info);
$file = fopen("test1.txt","w");
echo fwrite($file,$rank_info);

 經過測試,有多是定時任務在抓取瞬間,這個接口地址的dns解析出現問題,抓取後的內容就是上面自動調轉的代碼,當系統出現問題時,第一時間內要解決問題,趕忙讓人經過手動更新了一下抓取任務,抓取就數據正常了。json

 

經過這個問題,考慮到後續須要改進的幾點:服務器

1.業務與業務的內部系統間傳遞接口數據,最好採用json或xml形式,而且要包含數據獲取正常與否的狀態位;咱們的問題發生是論壇業務提供的數據接口是js形式,cms人員還得經過過濾來獲取數據,不知道之前的人員是怎麼想的。。。。運維

2.能夠在服務器上指定交互系統的ip,跳過dns解析;jsp

3.運維能夠考慮監控數據接口的調用結果,可是這個應該是個比較複雜的工程測試

相關文章
相關標籤/搜索