后台是利用http服务器nginx和tomcat在linux环境中,
1.首先项目里做了一个简单的文件夹,里面的文件可以在知道目录路径的情况下,进行随意下载,
本来,如果是这样的话,拦截器就可以进行处理这样的请求。
思路是:获取权限,看这个请求是否有权限进行访问,但是,我们在tomcat的service.xml目录里面配置了绝对路径
这就造成了,不需要经过项目,只要tomcat进行开启就可以访问文件夹。
1.解决思路如下:
本项目:可以利用过滤器,或者拦截器,以获取是否有权限进行处理,
http://blog.youkuaiyun.com/warm_start/article/details/52582865
项目以外,因为请求都是要由nginx进行转发,所以可以利用nginx防盗链的处理方式
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg
"key"
;
accesskey_signature
"mypass$remote_addr"
;
}
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。
ActionContext ctx = ActionContext.getContext();
String pagefilename = ServletActionContext.getRequest().getParameter("路径");
String path = pagefilename.substring(5, pagefilename.length());
ctx.getSession().put("path", "/imgess/?key="+ md5加密的那串密文);
nginx接受到请求,转发给tomcat,tomcat在把上面那串请求返回时,必须加上那串MD5加密过的密文才能够访问
在linux中防火墙限制其端口,只能使用nginx进行访问,不能直接访问tomcat
加在自启动中
vim /etc/init.d/rc.local
设置如下
iptables -A INPUT -s 127.0.0.1 -p tcp -m tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 8080 -j DROP
–A 参数就看成是添加一条规则
–p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端口的DNS
–dport 就是目标端口,当数据从外部进入服务器为目标端口
–sport 数据从服务器出去,则为数据源端口使用
–j 就是指定是 ACCEPT -接收 或者 DROP 不接收