网站被跳转到联通域名无法访问页面

早上,访问网站正文页面的时候,页面加载一部分后,自动跳转到了联通的域名无法访问页面,http://bjdnserror1.wo.com.cn:8080/issueunziped/bj140404/self0.jsp?UserUrl=world.xxx.com,

发现问题后,一开始以为是dns,但是通过分析,频道页,列表页,网站首页都没有问题,只有正文页面有问题;之后进行抓包,发现页面部分内容是可以正常加载的,加载一部分后就自动跳转,这时就想到有可能是页面模板被篡改,问过相关人员,早上没有进行任何修改与代码的提交;既然没有提交修改,又不是dns劫持的问题,那页面模板只有广告和其他业务的数据导致的,通过排查页面上的版块,发现一个版块引入的ssi中包含了:

<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机器上的一个定时任务抓取论坛热点文章导致的,

抓取部分代码如下:

		$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('
', '',$rank_info);
$file = fopen("test1.txt","w");
echo fwrite($file,$rank_info);

 通过测试,有可能是定时任务在抓取瞬间,这个接口地址的dns解析出现问题,抓取后的内容就是上面自动调转的代码,当系统出现问题时,第一时间内要解决问题,赶紧让人通过手动更新了一下抓取任务,抓取就数据正常了。

通过这个问题,考虑到后续需要改进的几点:

1.业务与业务的内部系统间传递接口数据,最好采用json或xml形式,并且要包含数据获取正常与否的状态位;我们的问题发生是论坛业务提供的数据接口是js形式,cms人员还得通过过滤来获取数据,不知道以前的人员是怎么想的。。。。

2.可以在服务器上指定交互系统的ip,跳过dns解析;

3.运维可以考虑监控数据接口的调用结果,但是这个应该是个比较复杂的工程

原文地址:https://www.cnblogs.com/daly2008/p/3654761.html