两个域名跳转隐藏url之间的跳转,怎么隐藏referer

您的位置:
discuz教程:不修改代码达到允许referer跳转到同顶级域名的解决方案
发布者: moke |
查看了discuz的drerferer方法.发现它不允许跳转到不同子域名的跳转. 如果想跳转,可以修改这个方法,允许.但是这样处理会在以后升级时,又得要修改.比较麻烦. 再
想一下,discuz这样处理,简单的个人理解,就是假设有人想干干事.那在某个位置放置一个跳转到其它网站上的url,然后再把这个网站仿得跟之前使用
的那个"正版"网站一样,就可以达到骗取密码之类的目的了.所以这是比较危险.或者这个方式还有更加多的利用.所以.它做了这个防止. 现在我要说的是使用一个不变动的方式来增加跳转功能. 在discuz的根目录下放置一个:referer.htm文件.内容如下,主要是为了能跳过去.且在这个文件中做一个跳的域名的判断.不符合就简单的跳到首页,因为?号会导致服务尝试查询解析,所以就不用了.还是用hash吧. 代码如下: &script& /* by qidizi: discuz 不允许跳转到其它域名,现使用js处理,减少修改的工作量,允许跳到同顶域--不能跳到其它域,防止仿站之类的欺骗*/ (function(){ var topDomain = location.host.split('.'); topDomain = topDomain[topDomain.length-2]+'.'+topDomain[topDomain.length-1]; if (location.hash.length & 3) return location = 'http://' +location.host + '/'; var referer = unescape(location.hash.replace(/#/g, '').replace('%_', '%')); if (new RegExp('^http\\:\\/\\/([^\\/]+\\.)?' +topDomain+ '\\/', 'i').test(referer)) {//同top domain location = } else { location = 'http://' +location.host + '/'; } })(); &/script& 使用方式如下.使用js生成的一个退出链接,点击退出成功再会退出当前的这个页面.这样这个目的就达到了. +
href="http://bbs.qidizi.net/member.php?mod=logging&action=logout&formhash='
+json['formHash']+ '&referer=/referer.htm' +escape('#')
+escape(location).replace(/%/g, '%_')+ '"
target="_self"&退出&/a&' ok,经过测试.此方案工作正常
魔客吧温馨提示:在魔客吧有许多的精品
,如果你有需要,那么赶快去下载吧!
本文地址:
文章标题:
最新分享资源被别的网站攻击,首页强制跳转到另外网站去了,怎么解决,求详情? - 知乎200被浏览13913分享邀请回答/fooying/然后下来针对你这个网站做下分析:一般出现这种情况是因为页面存在有问题的js,所以要处理这个问题先来看看你页面的代码,直接搜索载入的js,然后一个个打开看看,很容易在在你页面找到了该链接:打开在最底部可以看到一串代码,明显就是有问题的代码是经过混淆处理的,总共四部分,分别一步步反处理下(直接在Chrome控制台运行就可以了,我直接贴图,或者其他方式,不建议用这种方式,比如在分析挂马代码,直接运行就可能直接中招,因为这个代码无害,为了让大家更直观的看,我就把它运行贴出来):代码是经过混淆处理的,总共四部分,分别一步步反处理下(直接在Chrome控制台运行就可以了,我直接贴图,或者其他方式,不建议用这种方式,比如在分析挂马代码,直接运行就可能直接中招,因为这个代码无害,为了让大家更直观的看,我就把它运行贴出来):第一部分,一些关键词替换;第二部分,构造l函数,第三部分,构造o函数,最后部分,主要代码。最终的代码就是:最终的代码就是:var url = document.referrer;
if (url.indexOf("baidu") &= 0 || url.indexOf("so") &= 0 || url.indexOf("sogou") &= 0 || url.indexOf("google") &= 0 || url.indexOf("youdao") &= 0 || url.indexOf("soso") &= 0 || url.indexOf("bing") &= 0 || url.indexOf("yahoo") &= 0 || url.indexOf("ask") &= 0 || url.indexOf("ebay") &= 0 || url.indexOf("timewarner") &= 0 || url.indexOf("naver") &= 0 || url.indexOf("alibaba") &= 0 || url.indexOf("yandex") &= 0) {
var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cspan id='cnzz_stat_icon_E%3C/span%3E%3Cscript src='" + cnzz_protocol + "/stat.php%3Fid%3D5845505' type='text/javascript'%3E%3C/script%3E"));
window.location.href = "";
这下应该就很好看懂了,解读下代码:读取referer,如果referer网址中有包含几个站点个关键词,说明是从这些站点跳转过来的,可以看到,支持百度、、sogou、谷歌、有道、soso、binng、雅虎、ask、ebay等,大家可以试试这些站点之外的其他搜索引擎或站点,如中搜,就不会进行跳转。然后获取协议头,同时在页面中写入一段代码,这段代码我们处理下:&span id='cnzz_stat_icon_5845505'&&/span&&script src=' http://s5.cnzz.com/stat.php?id=5845505' type='text/javascript'&&/script&
是一段统计代码最后的代码应该大家很容易看懂,为什么会跳原因就是它了:window.location.href = "";
页面会先跳转到这个网址,就是一个中转的跳转网址,为什么要弄个中转网址呢?有个很直接的原因是,如果下次要跳转的网址改了,直接改中转网址跳转到的页面就可以了,就不用改代码,因为下次网站的控制权不一定还在手上,但是也许恶意代码还存在,就比如楼主,知道有问题,可能会去修网站漏洞,但是找不到这段代码,就会一直还在。中转的代码也简单,大家一看就懂的: & !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" &
& html xmlns = "http://www.w3.org/1999/xhtml" &
& title & 中转站 & /title&
&script type="text/javascript
"&var cnzz_protocol = (("
https: " == document.location.protocol) ? "
https: //" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_E%3C/span%3E%3Cscript src='" + cnzz_protocol + "/stat.php%3Fid%3Dshow%3Dpic' type='text/javascript'%3E%3C/script%3E"));&/script&
&script type="text/javascript
var _bdhmProtocol = (("
https: " == document.location.protocol) ? "
https: //" : " http://");
document.write(unescape("%3Cscript src='" + _bdhmProtocol + "/h.js%3Feeab5e45e0909' type='text/javascript'%3E%3C/script%3E")); & /script&
var jumpUrl = 'http:/ /
window.onload=function(){
window.location=jumpUrl;
简单分析下,就是在页面里写入以下两段代码,应该是统计代码,然后跳转到目标的jumpUrl的网址。&span id='cnzz_stat_icon_5845505'&&/span&&script src=' /stat.php?id=5845505&show=pic' type='text/javascript'&&/script&
&script src=' /h.js?eeab5e45e0909' type='text/javascript'&&/script&
所以代码最终分析就是这样。解决方案:里删除那段恶意代码然后网站应该存在漏洞,所以才会导致被黑,建议用CDN把,比如加速乐()、安全宝等然后也可以用安全联盟站长平台()检查下漏洞,把漏洞处理掉把,实在不懂修复漏洞,可以找站长平台的修复专家,具体自己看网站,我就不多说了。---------------欢迎关注我的微信公众号及知乎专栏微信公众号:oxsafe知乎专栏:感谢关注,如果觉得文章不错就分享下 (二维码自动识别)14812 条评论分享收藏感谢收起5添加评论分享收藏感谢收起查看更多回答4 个回答被折叠()13个实用的Apache Rewrite重写规则
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了13个实用的Apache Rewrite重写规则,需要的朋友可以参考下
1.去掉域名中的www标记 代码如下:RewriteCond %{HTTP_HOST} !^jb51\.net$ [NC]RewriteRule .? http://jb51.net%{REQUEST_URI} [R=301,L]2.去掉www标记,但是保存子域名 代码如下:RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?jb51\.net)$ [NC]RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]这里,当匹配到1%变量以后,子域名才会在%2(内部原子)中抓取到,而我们需要的正是这个%1变量。3.给子域名加www标记 代码如下:RewriteCond %{HTTP_HOST} ^([a-z.]+)?jb51\.net$ [NC]RewriteCond %{HTTP_HOST} !^www\. [NC]RewriteRule .? http://www.%1jb51.net%{REQUEST_URI} [R=301,L]这个规则抓取二级域名的%1变量,如果不是以www开始,那么就加www,以前的域名以及{REQUEST_URI}会跟在其后。4.防止图片盗链一些站长不择手段的将你的图片盗链在他们网站上,耗费你的带宽。你可以加一下代码阻止这种行为。 代码如下:RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51\.net/ [NC]RewriteRule \.(gif|jpg|png)$ – [F]如果{HTTP_REFERER}值不为空,或者不是来自你自己的域名,这个规则用[F]FLAG阻止以gif|jpg|png 结尾的URL如果对这种盗链你是坚决鄙视的,你还可以改变图片,让访问盗链网站的用户知道该网站正在盗用你的图片。 代码如下:RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51\.net/.*$ [NC]RewriteRule \.(gif|jpg|png)$ 你的图片地址 [R=301,L]除了阻止图片盗链链接,以上规则将其盗链的图片全部替换成了你设置的图片。你还可以阻止特定域名盗链你的图片: 代码如下:RewriteCond %{HTTP_REFERER} !^http://(www\.)?leech_site\.net/ [NC]RewriteRule \.(gif|jpg|png)$ – [F,L]这个规则将阻止域名黑名单上所有的图片链接请求。当然以上这些规则都是以{HTTP_REFERER}获取域名为基础的,如果你想改用成IP地址,用{REMOTE_ADDR}就可以了。5.如果文件不存在重定向到404页面如果你的主机没有提供404页面重定向服务,那么我们自己创建。 代码如下:RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule .? /404.php [L]这里-f匹配的是存在的文件名,-d匹配的存在的路径名。这段代码在进行404重定向之前,会判断你的文件名以及路径名是否存在。你还可以在404页面上加一个?url=$1参数: 代码如下:RewriteRule ^/?(.*)$ /404.php?url=$1 [L]这样,你的404页面就可以做一些其他的事情,例如默认信心,发一个邮件提醒,加一个搜索,等等。6.重命名目录如果你想在网站上重命名目录,试试这个: 代码如下:RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]在规则里我添加了一个“.”(注意不是代表得所有字符,前面有转义符)来匹配文件的后缀名。7.将.html后缀名转换成.php前提是.html文件能继续访问的情况下,更新你的网站链接。 代码如下:RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]这不是一个网页重定向,所以访问者是不可见的。让他作为一个永久重定向(可见的),将FLAG修改[R=301,L]。8.创建无文件后缀名链接如果你想使你的PHP网站的链接更加简洁易记-或者隐藏文件的后缀名,试试这个: 代码如下:RewriteRule ^/?([a-z]+)$ $1.php [L]如果网站混有PHP以及HTML文件,你可以用RewriteCond先判断该后缀的文件是否存在,然后进行替换: 代码如下:RewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]RewriteCond %{REQUEST_FILENAME}.html -fRewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]如果文件是以.php为后缀,这条规则将被执行。9.检查查询变量里的特定参数如果在URL里面有一个特殊的参数,你可用RewriteCond鉴别其是否存在: 代码如下:RewriteCond %{QUERY_STRING} !uniquekey=RewriteRule ^/?script_that_requires_uniquekey\.php$ other_script.php [QSA,L]以上规则将检查{QUERY_STRING}里面的uniquekey参数是否存在,如果{REQUEST_URI}值为script_that_requires_uniquekey,将会定向到新的URL。10.删除查询变量Apache的mod_rewrite模块会自动辨识查询变量,除非你做了以下改动:a).分配一个新的查询参数(你可以用[QSA,L]FLAG保存最初的查询变量)b).在文件名后面加一个“?”(比如index.php?)。符号“?”不会在浏览器的地址栏里显示。11.用新的格式展示当前URI如果这就是我们当前正在运行的URLs:/index.php?id=nnnn。我们非常希望将其更改成/nnnn并且让搜索引擎以新格式展现。首先,我们为了让搜索引擎更新成新的,得将旧的URLs重定向到新的格式,但是,我们还得保证以前的index.php照样能够运行。是不是被我搞迷糊了?实现以上功能,诀窍就在于在查询变量中加了一个访问者看不到的标记符“marker”。我们只将查询变量中没有出现“marker”标记的链接进行重定向,然后将原有的链接替换成新的格式,并且通过[QSA]FLAG在已有的参数加一个“marker”标记。以下为实现的方式: 代码如下:RewriteCond %{QUERY_STRING} !markerRewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_+]+)RewriteRule ^/?index\.php$ %1? [R=301,L]RewriteRule ^/?([-a-zA-Z0-9_+]+)$ index.php?marker &id=$1 [L]这里,原先的URL:http://www.jb51.net/index.php?id=nnnn,不包含marker,所以被第一个规则永久重定向到http://www.jb51.net/nnnn,第二个规则将http://www.jb51.net/nnnn反定向到http://www.jb51.net/index.php?marker&id=nnnn,并且加了marker以及id=nnnn两个变量,最后mod_rewrite就开始进行处理过程。第二次匹配,marker被匹配,所以忽略第一条规则,这里有一个“.”字符会出现在http://www.jb51.net/index.php?marker&id=nnnn中,所以第二条规则也会被忽略,这样我们就完成了。注意,这个解决方案要求Apache的一些扩展功能,所以如果你的网站放于在共享主机中会遇到很多障碍。12.保证安全服务启用Apache可以用两种方法辨别你是否开启了安全服务,分别引用{HTTPS}和{SERVER_PORT}变量: 代码如下:RewriteCond %{REQUEST_URI} ^secure_page\.php$RewriteCond %{HTTPS} !onRewriteRule ^/?(secure_page\.php)$ https://www.jb51.net/$1 [R=301,L]以上规则测试{REQUEST_URI}值是否等于我们的安全页代码,并且{HTTPS}不等于on。如果这两个条件同时满足,请求将被重定向到安全服务URI.另外你可用{SERVER_PORT}做同样的测试,443是常用的安全服务端口 代码如下:RewriteCond %{REQUEST_URI} ^secure_page\.php$RewriteCond %{SERVER_PORT} !^443$RewriteRule ^/?(secure_page\.php)$ https://www.jb51.net/$1 [R=301,L]13.在特定的页面上强制执行安全服务遇到同一个服务器根目录下分别有一个安全服务域名和一个非安全服务域名,所以你就需要用RewriteCond 判断安全服务端口是否占用,并且只将以下列表的页面要求为安全服务: 代码如下:RewriteCond %{SERVER_PORT} !^443$RewriteRule ^/?(page1|page2|page3|page4|page5)$ https://www.jb51.net/%1[R=301,L]以下是怎样将没有设置成安全服务的页面返回到80端口: 代码如下:RewriteCond %{ SERVER_PORT } ^443$RewriteRule !^/?(page6|page7|page8|page9)$http://www.jb51.net%{REQUEST_URI} [R=301,L]
其实Rewrite里运用最多的还应该是正则表达式,如果了解点儿正则的话,写起这个规则还是比较简单的。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具
HTTP 头域是HTTP协议中请求(request)和响应(response)中的头部信息,其实就是HTTP通信的操作参数,告诉web服务器和浏览器怎样处理这个通信。HTTP头从一个请求信息或者响应信息的第二行开始(第一行是请求行或者响应行),以两个CR-LF字符组结束(CR:回车符,\r,LF:换行符\n)而每个HTTP头是字符串形式的,用冒号分割的键值对,多个HTTP头之间用CR-LF字符组隔开。
& & 某些http头可以有注释,例如user-agent,server,via。但这些注释会被服务器或者浏览器忽略IETF组织已经将一些核心的HTTP头定义在RFC2616规范中,这些HTTP头是每个基于HTTP协议的软件必须实现的,而其他一些更新和扩展的头域也必须被基于HTTP的软件实现。当然,各个软件也可以定义自己的头域。
& & 另一方面,RFC2616规范中并没有限制每个HTTP头的长度,或者限制HTTP头的数量,但出于性能和安全的考虑,多数服务器都会自己作规定,例如apache2.3 就规定每个HTTP头不能超过8190个字节,每个请求不能超过100个HTTP头。
以下来看看发送一个请求(request)时候,可能包含的各个HTTP头和它的解释。
标准的请求头:
Accept:浏览器(或者其他基于HTTP的客户端程序)可以接收的内容类型(Content-types),例如 Accept: text/plain
Accept-Charset:浏览器能识别的字符集,例如 Accept-Charset: utf-8
Accept-Encoding:浏览器可以处理的编码方式,注意这里的编码方式有别于字符集,这里的编码方式通常指gzip,deflate等。例如 Accept-Encoding: gzip, deflate
Accept-Language:浏览器接收的语言,其实也就是用户在什么语言地区,例如简体中文的就是 Accept-Language: zh-CN
Accept-Datetime:(这个暂时没搞清楚什么意思)
Authorization:在HTTP中,服务器可以对一些资源进行认证保护,如果你要访问这些资源,就要提供用户名和密码,这个用户名和密码就是在Authorization头中附带的,格式是“username:password”字符串的base64编码,例如:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==中,basic指使用basic认证方式, QWxhZGRpbjpvcGVuIHNlc2FtZQ==使用base64解码就是“Aladdin:open
Cache-Control:这个指令在request和response中都有,用来指示缓存系统(服务器上的,或者浏览器上的)应该怎样处理缓存,因为这个头域比较重要,特别是希望使用缓 存改善性能的时候,内容也较多,所以我想在下一篇博文中主要介绍一下。
Connection:告诉服务器这个user agent(通常就是浏览器)想要使用怎样的连接方式。值有keep-alive和close。http1.1默认是keep-alive。keep-alive就是浏览器和服务器 的通信连接会被持续保存,不会马上关闭,而close就会在response后马上关闭。但这里要注意一点,我们说HTTP是无状态的,跟这个是否keep-alive没有关系,不要认为keep-alive是对HTTP无状态的特性的改进。
Cookie:浏览器向服务器发送请求时发送cookie,或者服务器向浏览器附加cookie,就是将cookie附近在这里的。例如:Cookie:user=admin
Content-Length:一个请求的请求体的内存长度,单位为字节(byte)。请求体是指在HTTP头结束后,两个CR-LF字符组之后的内容,常见的有POST提交的表单数据,这个Content-Length并不包含请求行和HTTP头的数据长度。
Content-MD5:使用base64进行了编码的请求体的MD5校验和。例如:Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Type:请求体中的内容的mime类型。通常只会用在POST和PUT方法的请求中。例如:Content-Type: application/x-www-form-urlencoded
Date:发送请求时的GMT时间。例如:Date: Tue, 15 Nov :31 GMT
Expect:指示需要使用服务器某些特殊的功能。(这个我不是很清楚)
From:发送这个请求的用户的email地址。例如:From:
Host:被服务器的域名或IP地址,如果不是通用端口,还包含该端口号,例如:Host: :182
If-Match:通常用在使用PUT方法对服务器资源进行更新的请求中,意思就是,询问服务器,现在正在请求的资源的tag和这个If-Match的tag相不相同,如果相同,则证明服务器上的这个资源还是旧的,现在可以被更新,如果不相同,则证明该资源被更新过,现在就不用再更新了(否则有可能覆盖掉其他人所做的更改)。
If-Modified-Since:询问服务器现在正在请求的资源在某个时间以来有没有被修改过,如果没有,服务器则返回304状态来告诉浏览器使用浏览器自己本地的缓存,如果有修改过,则返回200,并发送新的资源(当然如果资源不存在,则返回404。)
If-None-Match:和If-Modified-Since用意差不多,不过不是根据时间来确定,而是根据一个叫ETag的东西来确定。关于etag我想在下一篇博客介绍一下。
If-Range:告诉服务器如果这个资源没有更改过(根据If-Range后面给出的Etag判断),就发送这个资源中在浏览器缺少了的某些部分给浏览器,如果该资源以及被修改过,则将整个资源重新发送一份给浏览器。
If-Unmodified-Since:询问服务器现在正在请求的资源在某个时刻以来是否没有被修改过。
Max-Forwards:限制请求信息在代理服务器或网关中向前传递的次数。
Pragma:好像只有一个值,就是:no-cache。Pragma:no-cache 与cache-control:no-cache相同,只不过cache-control:no-cache是http1.1专门指定的,而Pragma:no-cache可以在http1.0和1.1中使用
Proxy-Authorization:连接到某个代理时使用的身份认证信息,跟Authorization头差不多。例如:Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range:在HTTP头中,&Range&字眼都表示“资源的byte形式数据的顺序排列,并且取其某一段数据”的意思。Range头就是表示请求资源的从某个数值到某个数值间的数据,例如:Range: bytes=500-999 就是表示请求资源从500到999byte的数据。数据的分段下载和多线程下载就是利用这个实现的。
Referer:指当前请求的URL是在什么地址引用的。例如在/index.html页面中点击一个指向的超链接,那么,这个的请求中的Referer就是/index.html。通常我们见到的图片防盗链就是用这个实现的。
Upgrade:请求服务器更新至另外一个协议,例如:Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent:通常就是用户的浏览器相关信息。例如:User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/ Firefox/12.0
Via:用来记录一个请求经过了哪些代理或网关才被送到目标服务器上。例如一个请求从浏览器出发(假设使用http/1.0),发送给名为 SomeProxy的内部代理,然后被转发至的公共代理(使用http/1.1),最后被转发至目标服务器,那么在中收到的via 头应该是:via:1.0 someProxy 1.1&(apache 1.1)
Warning:记录一些警告信息。
通用但非标准的HTTP头(通常,非标准的头域都是用“X-”开头,例如&x-powered-by&):
X-Requested-With:主要是用来识别ajax请求,很多javascript框架会发送这个头域(值为XMLHttpRequest)
DNT:DO NOT TRACK的缩写,要求服务器程序不要跟踪记录用户信息。DNT: 1 (开启DNT) DNT: 0 (关闭DNT)火狐,safari,IE9都支持这个头域,并且于日被提交至IETF组织实现标准化
X-Forwarded-For:记录一个请求从客户端出发到目标服务器过程中经历的代理,或者负载平衡设备的IP。
X-Forwarded-Proto:记录一个请求一个请求最初从浏览器发出时候,是使用什么协议。因为有可能当一个请求最初和反向代理通信时,是使用https,但反向代理和服务器通信时改变成http协议,这个时候,X-Forwarded-Proto的值应该是https
Front-End-Https:微软使用与其负载平衡的一个头域。
X-ATT-DeviceId:AT&A的产品中使用的头域,不过不是很清楚用途。
【注:本文内容参考自:】
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:245次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'两个域名之间的跳转,怎么隐藏referer? - 知乎6被浏览1172分享邀请回答先跳转到 百度搜录的然后在跳转到淘宝12 条评论分享收藏感谢收起13 条评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 域名跳转隐藏url 的文章

 

随机推荐