Web应用安全概述:
Web应用安全是指保护Web应用程序免受恶意攻击和未经授权的访问的一系列措施。
Web应用程序的安全模型:
认证:指验证用户身份的过程。常见的包括:用户名密码、双因素认证、生物识别技术等。
授权:指确定用户可以访问哪些资源。常见的包括:基于角色的访问控制、基于权限的访问控制。
会话管理:指管理用户与Web应用程序之间的会话的过程。Web应用程序需要确保会话安全来防止会话劫持和会话固化攻击等威胁。常见的会话管理技术:使用安全的cookie、HTTPS协议等。
Java软件开发中常见安全漏洞:
Web应用程序安全威胁包括:SQL注入、跨站点脚本攻击(XSS)、跨站点请求伪造(CSRF)和文件包含漏洞等。
常规:SQL注入、XSS、CSRF
越权:认证与授权、未授权访问漏洞
逻辑:逻辑漏洞、代码注入攻击、导致暴力破解
其他:例如存储不安全、信息泄露
常见安全问题:
登录过程打印了密码信息
逻辑上:ids找回密码可被绕行
重要参数传递,如通过前端传递userid
接口信息安全,内部测试接口外放生产环境
登录session可复制(eg:用jwt会话跨域)
信息组合攻击,多个渠道获取信息组合进行暴力破解。
非https导致中间人攻击;请求重放攻击
无安全防护从header头获取信息
密码传输无加密或加密较简单
图形验证码校验后不清楚,导致暴力破解
安全及逻辑漏洞-例:
java
@GetMapping("/login")
public String getUser(@RequestParam("username")String username,@RequestParam("password")String pwdInput,
@RequestParam("captcha")int captcha){
String sql="SELECT username,password FROM users WHERE username=""+username+"";
try(Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)){
if(resultSet.next()){
String pws = resultSet.getString("password");
if(pswInput != pwd){
return "fail";
}
if(captcha == request.getSession().getAttribute("username")){
return "success";
}
}
}
return "fail";
}