javaweb 的小问题 关于防盗链的

Python013

javaweb 的小问题 关于防盗链的,第1张

防止图片盗链的两种方式:

1 配置filter,非拦截器, 过滤请求.

web.xml:

<filter-mapping>

<filter-name>imageRedirectFilter</filter-name>

<url-pattern>/upload/images/*</url-pattern>

</filter-mapping>

源代码:

public class ImageRedirectFilter implements Filter {

public void init(FilterConfig config) throws ServletException {

}

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req

HttpServletResponse response = (HttpServletResponse) res

// 禁止缓存

response.setHeader("Cache-Control", "no-store")

response.setHeader("Pragrma", "no-cache")

response.setDateHeader("Expires", 0)

// 链接来源地址

String referer = request.getHeader("referer")

System.out.println("refer is"+referer)

if (referer == null || !referer.contains(request.getServerName())) {

/**

* 如果 链接地址来自其他网站,则返回错误图片

*/

request.getRequestDispatcher("/error.gif").forward(request, response)

} else {

/**

* 图片正常显示

*/

chain.doFilter(request, response)

}

}

public void destroy() {

}

}

2 在放置图片的folder内添加.htaaccess的支持

类似下面这样

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !simcolecn [NC]

RewriteCond %{HTTP_REFERER} !zhuaxiacom [NC]

RewriteCond %{HTTP_REFERER} !googlecom [NC]

RewriteCond %{HTTP_REFERER} !baiducom [NC]

RewriteCond %{HTTP_REFERER} !bloglinescom [NC]

RewriteRule (jpg|gif|png|bmp|swf|jpeg) /image/replacegif [RNCL]

RewriteRule ^(*)$ $ [L]

java实现超链接下载方法如下:

response.setHeader("Content-disposition","attachmentfilename="下载的文件名字)

备注:让response调用setheader方法添加下载的头给客户的浏览器,浏览器收到该头后就会打开相应的下载对话框。

兼容性强

网校系统Java语言编写,可以在少量修改或者在不改的情况下,就可以多平台运行,这种优势是其他语言编写无法完成的事,这是语言本身的优势,而且采用Java编写还能更好的处理数据,比如pc端和手机端的数据统一,ios端和Android端的数据统一,可以说在时间成本上节约了很多。

防攻击,安全性高

大家都知道,网校等发展一定规模后,安全就成了网校需要解决的事,而Java编写的语言,前期就可以解决这样的问题,它的安全系数是非常高的,语言本身的安全性较佳,对于防病毒等,比其他语言拥有更多的优势。不仅能够防止挂马、盗链、恶意下载等,还能保护注册学员的信息不被窃取,确保音视频课程不会被盗取。总之,想要攻击用java编写的语言,是难上加难。

多线程运行,加载速度快

Java语言编写网校系统,打破用户进入课堂卡顿问题,尤其是进行大班授课,或者公开课时,学员听课时非常多的,java可以确保这么多人同时进入课程时,速度快。这是java编写网校系统的优势,在处理多线程方面是优秀的,让系统多任务同时启动,而且交互性也很强,使用者体验度高,学员课堂效率也会变高。

后期添加功能方便

比如,线下转线上教育,需要搭建网校,因为刚刚开始,功能需求不是很多,那么等后期学员越来越多以后,肯定是需要增加的,那么这个时候就Java就起到作用了,java语言就可以轻松实现,这源于它动态的特点,在扩展功能是可以将新的代码加入到运行程序中,这是容易实现的,没有太多复杂的地方。所以利用java编写,在后续加功能或者升级时,都带来很多便利。