错与对并不是绝对的

质量属性之安全性战术

安全性战术包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术。

 

 

 

 

 

 一、抵抗攻击

1、对用户进行身份验证

输入 用户名和密码,用户名和密码同时正确才可以登录。

@PostMapping("/user/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Model model, HttpSession session){

        if (!StringUtils.isEmpty(username) && "password".equals(password)){
            //登录成功!
            session.setAttribute("loginUser",username);
            return "redirect:/main.html";
        }else {
            //登录失败!存放错误信息
            model.addAttribute("msg","用户名密码错误");
            return "index";
        }

    }

 

 其实再加上验证码验证会更好。

 

2、对用户进行授权

 

 如果没有登录直接访问emps页面的话,会被限制,返回到index进行登录。

 

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if (user == null){//未登录,返回登录页面
            request.setAttribute("msg","没有权限,请先登录");
            request.getRequestDispatcher("/index.html").forward(request,response);
            return false;
        }else {
            //登录,放行
            return true;
        }
    }

 

 

 

 

 

3、维护数据的机密性

使用数据库方面PreparedStatement要比Statement安全很多,可以防止SQL注入

String sql = "select * from admin where account=? and password=?";
PreparedStatement pstmt = DButil.getInstance().getPreparedStatement(sql);

 

4、维护数据的完整性

数据并不会因为各种操作而受到破坏。

5、防止暴露的信息

登录的时候对密码进行加密,防止登录的时候暴露密码等重要信息。

6、限制访问

被授权的登录的用户才可以访问,否则返回登录界面。

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if (user == null){//未登录,返回登录页面
            request.setAttribute("msg","没有权限,请先登录");
            request.getRequestDispatcher("/index.html").forward(request,response);
            return false;
        }else {
            //登录,放行
            return true;
        }
    }

 

二、检测攻击的工作方式通常是将网络通信模式与数据库中已知攻击的历史记录进行对比;

检测攻击检测通常通过“入侵检测”系统进行。此类系统的工作方式是比较网络通信模式与数据库系统。在误检测的情况下,将通信模式与已知攻击的历史模式进行比较。在异常检测的情况下,将通信模式与其本身的历史基线进行比较。通常,必须对数据包进行过滤,以进行比较。可以根据协议、TCP 标记、有效负荷大小、源或目的地地址以及端口号进行过滤。入侵检测器必须有某种检测攻击的传感器,进行传感器融合的管理器,存储事件供以后进行分析的数据库,用于离线报告和分析的工具以及一个控制台, 以使分析员能够修改入侵检测操作。

三、从攻击中恢复

可以把从攻击中恢复的战术分为与恢复状态相关的战术和与识别攻击者相关的战术(用于预防性的或惩罚性的目的)。

在将系统或数据恢复到正确状态时所使用的战术与用于可用性的战术发生了重叠,因为它们都是从不致的状态恢复到一致状态。二者的差别就是要特别注意维护系统管理数据的冗余副本,如密码、访问控制列表、域名服务和用户资料数据。用于识别攻击者的战术是“维持审计追踪”。审计追踪就是应用到系统中的数据的所有事务和识别信息的一个副本。可以使用审计信息来追踪攻击者的操作,支持认可(它提供进行了某个特定请求的证据)并支持系统恢复。审计追踪本身通常就是攻击目标,因此应以一种可靠的方式对其进行维护。

 

 

posted on 2020-03-04 23:04  错与对并不是绝对的  阅读(332)  评论(0编辑  收藏  举报

导航