JSP用referer能保证页面不被“盗链”吗?
我的答案是:不能保证。
referer是浏览器请求一个页面时所附带的一个参数,这个参数也就是告诉了服务器你是从哪里链接过来的。
在你的浏览器的页面上点击了一个指向一个页面的超链接的时候,浏览器就会向web服务器发送request,
request的请求数据包中就会包涵了referer参数。
request的数据包结构:
<input type="ifream" height="200" width="300" src="http://blog.csdn.net/scnu_xiaokun/article/details/4065186" />
通常我们都是通过request.getParameter("referer")来获得referer参数的值,然后判断referer是否是本网站的网址或者为空,如果不是则response.setStatus(404)来禁止盗链的。
<%
String mess=request.getParameter("referer");
if(mess==null )
{
mess="";
response.setStatus(404);
}
if(!(mess.startWith(http://127.0.0.1:8080))
response.setStatus(404);
%>
为什么referer不能保证页面被盗链呢?那就是request数据包能够被伪造!!!
参照request包的格式进行伪造就行了。
伪造了怎么解决referer参数值的问题?
这个需要花点点时间去发现啦,先试试用下它的网站的域名或者IP,不行再详细进行尝试。从地址栏可能会得到页面的所在目录的。
更直接的是直接把超链接所在的网页的地址拿下了就行了。