zoukankan      html  css  js  c++  java
  • Web 项目杂记(一)

    1、Tomcat 多实例部署

    在Tomcat下多实例部署后,发现如下问题,采用etc/init.d/tomcat start方式无法启动,而需要采用startup.sh。查找原因发现,是因为多实例部署时,重复jar加载造成tomcat内存配置不足,解决的方式是将共用的jar包放在tomcat的lib下,而工程只保留自有的。

    2、防盗链

    防盗链是指防止自己的链接,主要是图片链接等被其他服务器盗用访问。主要防止的手段是利用http中的referer,它是header的一部分,当浏览器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。在JAVA的技术架构中,可以写一个拦截器,然后在拦截器中比对:

    String referer = request.getHeader("referer"); 
      if (referer == null || !referer.contains(request.getServerName())) {

    3、Token 防止重复提交

      3.1) 在返回表单提交页面的时候,在缓存中设置一个Token;

      3.2)请求的时候将这个Token作为隐藏参数带回来;

      3.3)在处理表单提交请求时,比对参数Token和缓存中表单的Token;这个Token可以存在session里,也可以是Redis等第三方缓存;

    上述设置的结果是不刷新页面,将无法第二次提交表单;

    PS: 该特性原来在H公司是作为安全基线之一,一般是前后端都提要求,后端用的也是Token的方案,由平台端统一封装,当时应该是存在session里。

    4、防止恶意请求

    思路是在拦截器里比较相同请求来源的间隔。

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            HttpSession session = request.getSession();
            String preRequest = (String) session.getAttribute(PREREQUEST);
            Long preRequestTime = (Long) session.getAttribute(TIME);
            String url = request.getServletPath();
            if (preRequestTime != null && preRequest != null) { 
                if ((url.equals(preRequest) || allRequest)
                        && System.currentTimeMillis() - preRequestTime < minRequestIntervalTime) {
            //具体的处理
            }
            session.setAttribute(PREREQUEST, url);
            session.setAttribute(TIME, System.currentTimeMillis());
            return super.preHandle(request, response, handler);
        }
  • 相关阅读:
    springmvc始终跳转至首页,不报404错误
    c3p0数据库连接池无法连接数据库—错误使用了username关键字
    maven无法下载依赖jar包—几种仓库的区别
    Goland开发工具安装教程
    Go语言代码规范指导
    go语言入门教程:基本语法之变量声明及注意事项
    为什么越来越多的人偏爱go语言
    go语言入门教程:基本语法—常量constant
    go语言入门教程:基本语法之数据类型
    三分钟了解Go语言的前世今生
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/5961142.html
Copyright © 2011-2022 走看看