HTTP Referer 防外链
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。
if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))
{
Server.Transfer("Error.aspx");
}
下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"):
1) 直接用<a href="">
2) 用Submit或<input type="image">提交的表单(POST或GET)
3) 使用JAvaScript提交的表单(POST或GET)
1) 从收藏夹链接
2) 单击主页或自定义的地址
3) 在浏览器中直接输地址
4) 使用JavaScript的Location.href或者是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向
7) 用XML加载地址
显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
ref.asp
<%
response.write "You came from: " & request.servervariables("http_referer")
%>
ref.htm
<%
Response.AddHeader "Refresh", "10;URL=ref.asp"
%>
<meta http-equiv='refresh' content='10;URL=ref.asp'>
<form method=GET action=ref.asp name=getform>
<input type=submit value=' Go there (GET) >> '>
<input type=image style='cursor:hand'>
</form><p>
看看上面的代码会得到什么的结果.
<form method=POST action=ref.asp name=postform>
<input type=submit value=' Go there (POST) >> '>
<input type=image style='cursor:hand'>
</form><p>
<a href='ref.asp'>直接链接</a><p>
<a href='#' onclick='window.location.href="ref.asp";return false;'>Javascript location</a><p>
<a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascript replace</a><p>
<a href='#' onclick='document.getform.submit();return false;'>javascript GET</a><p>
<a href='#' onclick='document.postform.submit();return false;'>javascript POST</a>
Request.ServerVariables(HTTP_REFERER)的工作方式
HTTP Referer 防外链的更多相关文章
- 用nginx做反向代理来访问防外链图片
用nginx做反向代理来访问防外链图片 女儿的博客从新浪搬到wordpress后,发现原来博客上链接的新浪相册的图片都不能访问了,一年的博客内容,一个个去重新上传图片,修正链接也是个大工程.还是得先想 ...
- PHP伪造referer突破网盘禁止外链(附115源码)
新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制内容到剪贴板 代码: <?$ur ...
- 利用js查找页面中的内链,外链
起初没听说过内链外链,只有链接锚文本,在面试中被问到如何查找到页面中的内链和外链,就在想,什么是内链和外链啊??????? 后来面试官给我解释了一下他们的区别,自己稍微懂了,自己当时回答的是通过获取a ...
- 小讲堂:Mobox文档管理软件中的文件外链是什么?
今天我们来讨论Mobox文档管理软件中的文件外链是什么?熟悉MOBOX的朋友们应该知道,如果有文件需要分享给其他同事,直接可以进行文件共享.对方会在AM的即时通讯客户端有消息提醒,点击消息提醒可以看到 ...
- 那些年因为粗心导致的外链css无效
css文件三种引用的三种方式: 1.外链: <link rel= "stylesheet" href=""> 注:如果使用外链式绝对不可以忘记 re ...
- SVN外链
1 外链使用场景 使用Subversion进行版本管理时,有时需要将一些公共库或者开源库链接到自己项目中,为了同时做到与外部库实时更新,使用Subversion的外链功能,从而将外部的库当做本地项目的 ...
- 手动获取酷我Mp3外链
素材→http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_随便找一首歌http://www.kuwo.cn/yinyue/1034 ...
- jQuery外链新窗口打开
对于外链,为了留住用户在本站,我们通常会使用新窗口打开,你可以设置target="_blank".然而手动一个是麻烦,另一个则是有可能会遗漏,本文通过jQuery查询要点击的链接, ...
- 如何获取Flickr图片链接地址作为外链图片
Flickr,雅虎旗下图片分享网站.为一家提供免费及付费数位照片储存.分享方案之线上服务,也提供网络社群服务的平台.其重要特点就是基于社会网络的人际关系的拓展与内容的组织.这个网站的功能之强大,已超出 ...
随机推荐
- cargo failed to finish deploying within the timeout period [120000]
cargo插件,报错:failed to finish deploying within the timeout period [120000] 解决方法:配置timeout为0 <plugin ...
- oracle 卸载
由于工作需要,重装了一下Oracle,然后发现同SQLServer,MySQL等数据库相比,Oracle的卸载重装真是不一般的麻烦. 整理了一下我的Oracle的卸载重装过程,给自己备忘,同时 ...
- 利用javascript实现课程选择
最终实现的效果如下图所示: 代码如下所示: HTML代码部分: <body> <div class="page" style="overflow: hi ...
- iOS 枚举的巧用
前言 在之前的一篇文章中简单的提到了这个问题, 但是自己写的不详细, 并且自己深入了解的也不是特别多, 在开发中也没怎么用到,所以经过阅读者的反馈对这个问题很是疑惑! 本篇文章会分析之前的不足之处, ...
- Android 自动化测试 Emmagee
Emmagee 是一个性能测试小工具 用来监控指定被测应用在使用过程中占用机器的CPU, 内存,流量资源的性能小工具 阅读目录 Emmagee 介绍 Emmagee是网易杭州研究院QA团队开发的一个简 ...
- ReactiveCocoa(RAC)
好处:代码高聚合,方便我们管理: 链式编程: CaculatorMaker.h #import <Foundation/Foundation.h> #define ADD #define ...
- My favorite bit torrent client for Ubuntu
Deluge Bit Torrent ClientDeluge is among my favorite bit torrent clients for Ubuntu. It is fast, sli ...
- shell学习笔记1
知识点1.修改输出的颜色 echo -e "\e[1;31m This is red text \e[0m" 其中,\e[1;31m 表示将输出显示为红色: \e[0m 标识将颜色 ...
- VB.NET vs. C#
VB.NET Program Structure C# Imports System Namespace Hello Class HelloWorld Overloads Shar ...
- LTE Module User Documentation(翻译10)——网络连接(Network Attachment)
LTE用户文档 (如有不当的地方,欢迎指正!) 16 Network Attachment(网络连接) 正如前面章节 Basic simulation program 所述,连接用户到基站时通过调 ...