一、 问题描述
在Web系统中,为防止自己网站资源被别人直接盗链使用(复制你的URL地址,直接嵌入到他自己网站里)。 在jsp中可以用request对象拿到客户请求信息或者表单数据,在客户端请求头报文协议里,通过“Referer”属性的信息记录上一次请求的URL,所以我们可以利用“Referer”属性值防止盗链问题(如需实现开放接口白名单授权访问或防止内容被盗爬,请参考其他文章内容)。
二、示例如下:
下面首页待跳转页面index.jsp,进入该页面,点击跳转到防盗链页面b.jsp进行安全测试,你可以打开"Web开发者"网络请求链资源信息(如下图1-1)
index.jsp
<html>@b@ <head><title>测试首页</title></head>@b@ <body>@b@ 准备跳转到防盗链页面,请点击<a href="b.jsp">跳转</a>@b@ </body>@b@</html>
(图1-1)
b.jsp
<html>@b@<head><title>防盗链页面</title></head>@b@ <body>@b@准备进行防盗链测试:@b@ @b@<%@b@@b@if(null==request.getHeader("Referer")||request.getHeader("Referer").indexOf("yourdomain.com")!=-1){@b@@b@%>@b@ @b@ 合法访问,欢迎您!@b@ @b@<%}else{%>@b@ @b@ 非法访问,你正在盗取被人网站资源!!!@b@ @b@<%}%>@b@ @b@</body>@b@</html>