javaWeb安全篇(1)——防盗链技术的实现
来源:互联网 发布:dj混音软件 编辑:程序博客网 时间:2024/06/04 01:11
原理描述:
检测请求头中的Referer属性,如果请求头中Referer属性是以http://www.163.com 开头的,则说明是从合法网站链接过来的请求,如果不是(比如是以非法网站http://www.361.com)开头的,则跳转到合法网站的主页.
演示盗链行为之前的准备工作:
1. 创建一个虚拟主机,用于模拟非法盗链网站
在磁盘路径e:\
下创建一个ROOT文件夹,在该文件夹下创建默认主页index.html
内容如下:
<h1>易网</h1><hr/>广告<a href="http://localhost/Day07/exec/fengjie.jsp">凤姐独家新闻</a>广告
注:为了模拟dns域名解析,需要在windows/sysem32/drivers/etc/hosts
文件中修改非法网站的域名解析地址为本地127.0.0.1 还需要在tomcat服务器的 tomcat*/conf/server.xml
文件中配置一个虚拟主机 <Engine>
标签中添加 <Host name="www.361.com" appBase="e:/361"/>
即可完成配置
- 创建一个合法的jsp应用
fengjie.jsp
,用于模拟合法防盗链网站
<body> <% String ref = request.getHeader("Referer");//获取请求头中Referer字段中的内容 if(ref ==null || "".equals(ref) || !ref.startsWith("http://localhost")){//如果Referer字段不是以http://localhost开头,则证明是非法的 response.sendRedirect(request.getContextPath()+"/index.jsp"); //否则重定向到合法主页并返回,不显示余下的内容 return; } %> 凤姐回忆录:我的奋斗史------ </body>
演示现象:
1.在地址栏键入www.361.com登录非法网站点击查看独家新闻,看到其链接是盗用的合法网站的内容
通过非法网站的链接点进去之后可以直接查看到合法网站的新闻
2,为了杜绝这种可耻的盗链现象,我们在合法web应用中加入防盗链功能
看到改进后的现象为:即使点了该非法网站的盗链接,也能重定向到合法网站的主页index.jsp
**
使用自定义标签进行改进:
**
原来的jsp文件中嵌套了java代码,现在可以直接使用 <exec:ref/>
代替,简化页面布局,使繁琐的java代码从jsp页面中消失。。。
做法如下:
1.创建web应用中创建RefTag类,并继承SimpleTagSupport类,覆盖父类的doTag()方法
public void doTag() throws JspException, IOException { //和在servlet中的代码不同,该类没有包含request对象,需要先获取request对象 PageContext pc = (PageContext) getJspContext();//不能通过JspContext直接获取request对象,需要先获取PageContext HttpServletRequest request = (HttpServletRequest) pc.getRequest(); HttpServletResponse response = (HttpServletResponse) pc.getResponse(); String ref = request.getHeader("Referer"); if(ref ==null || "".equals(ref) || !ref.startsWith("http://localhost")){ response.sendRedirect(request.getContextPath()+"/index.jsp"); return; }}
2.在exec.tld文件中描述该自定义标签的属性
<tag> <name>ref</name> <tag-class>com.itheima.exec.RefTag</tag-class> <body-content>empty</body-content> </tag>
3.在新闻页面的jsp文档fengjie.jsp中引用该自定义标签
<body> <exec:ref/> 凤姐回忆录:我的奋斗史------</body>
- javaWeb安全篇(1)——防盗链技术的实现
- 明明白白你的Linux服务器——安全篇
- 我的安全之路——Web安全篇
- 明明白白你的Linux服务器——安全篇
- 计算机安全篇(1)
- javaweb之自定义标签库——防盗链标签
- Orchard Pitfalls - 1安全篇
- Apache 防盗链(Apache Anti-Leech)技术的简单实现
- Apache 防盗链(Apache Anti-Leech)技术的简单实现
- javaweb 之防盗链
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- 微软为Vista编制的企业梦想(安全篇)
- ContextLoaderListener作用详解
- hdu 1212 Big Number(对大数进行取余)
- htons():ntohl():ntohs():htons()函数
- 点击html按钮实现连接功能
- 多线程中的互斥与同步机制
- javaWeb安全篇(1)——防盗链技术的实现
- android截屏
- Intel处理器Family、Model、Stepping等的学习
- Nginx配置文件nginx.conf中文详解
- oracle之空值(NULL)和空值函数使用
- POJ 2456 Aggressive cows
- Windows下PHP配置成功后phpinfo中找不到mysql
- C++ 枚举类型的思考
- 分布式系统工具Consul