HTTP协议、时间戳、防盗链的一些概念
2021-04-20 13:26
标签:iis mapping soft ons 端口 font 伪造 contains ima HTTP协议 什么是HTTP协议 (HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。 Web服务器根据接收到的请求后,向客户端发送响应信息。 HTTP默认端口号为80,但是你也可以改为8080或者其他端口。 HTTP三点注意事项: 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status Code。 下面是常见的HTTP状态码: 时间戳 什么是时间戳 一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间 它能用来干什么 版本更新,解决浏览器缓存 防盗链 基础防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性, 比如客户端请求IP,请求URL中携带的referer。优点是规则简单,配置和使用都很方便,缺点是防盗链所依赖的验证信息很多都是可以伪造的,因此此类防盗链可靠性较低。 Java代码手段防止非法请求,思路如下: Referer在HTTP协议里有特殊的用途,当浏览器向服务器发送请求时,一般会带上 Referer头,告知服务器该请求是从哪个页面链接过来的。Referer经常被用于页面访问统计、图片防盗链等。 流媒体直播同样支持Referer防盗链,当请求发送到CDN服务器后,CDN服务器检查客户URL中所携带的Referer字段的信息,禁止或者允许符合特定规则(支持正则匹配)的 防盗链具体具体相关内容可以看这位大佬的博客:https://blog.csdn.net/weixin_36562804/article/details/81014642 HTTP协议、时间戳、防盗链的一些概念 标签:iis mapping soft ons 端口 font 伪造 contains ima 原文地址:https://www.cnblogs.com/wishsaber/p/12259548.htmlHTTP 工作原理
HTTP状态码
基础防盗链
1.获取到当前请求的域名,如www.a.com
2.获取到请求资源的上一个地址
3.判断上一个地址是否为空,如果为空代表的是直接访问的资源,非法
还有一种情况就是B项目访问时上一个地址www.b.com/xxx 不是资源所在地址,非法新建一个过滤器,实现逻辑,如果非法则显示图像,拦截return ,否则放行
public class ImageFilter implements Filter{
@Override
public void destroy() {
System.out.println("过滤器销毁");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("dofilter");
//获取到当前请求的连接地址和上一个发送请求的地址
HttpServletRequest httprequest=(HttpServletRequest)request;
HttpServletResponse httpresponse=(HttpServletResponse)response;
//获取上一个发送请求的连接
String referer = httprequest.getHeader("Referer");
String serverName = httprequest.getServerName();
System.out.println(referer+"\t"+serverName);
if(referer==null||!referer.contains(serverName)) {
request.getRequestDispatcher("/img/ffqq.png").forward(request, response);
return;
}
//放行
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("过滤器启动");
}
}
web.xml配置过滤地址:
文章标题:HTTP协议、时间戳、防盗链的一些概念
文章链接:http://soscw.com/index.php/essay/77144.html