对于JPA中的SQL注入,一般出现时使用的是+号直接拼接。
比如前端将JSON传送到后端后,会有一个反序列化的操作,将JSON串反序列化为目标类,期间会有一个数据类型转换过程。
filterChainDefinitionMap.put("/static/**", ANON)
.antMatchers(“/admin”).hasRole(“ADMIN”)
.antMatchers(“/user/**”).hasRole(“USER”)
.antMatchers(“/**”).permitAll()
.authorizeRequests()
.regexMatchers(“^/administrator /.*$”).hasRole(“ADMIN”)
.regexMatchers(“/admin”) .hasRole(‘ADMIN’)”)
.regexMatchers(“^/user/.*/profile$”).hasRole(“USER”)
.regexMatchers(“^/public/.*$”).permitAll()
.anyRequest().permitAll()
^/ administrator /.*$ 匹配以 / administrator / 开头的任何URL。
^/user/.*/profile$ 匹配任何以 /user/ 开头,以 /profile 结尾的URL。
^/public/.*$ 匹配以 /public/ 开头的任何URL。
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String uri = request.getRequestURI();// /system/login
StringBuffer requestURL = request.getRequestURL(); // http://localhost:8080/system/login
System.out.println("requestURL: " + requestURL);
System.out.println("getRequestURI: " + uri);
if(uri.startsWith("/system/login")) {
System.out.println("this is login page...");
resp.getWriter().write("this is login page...n");
chain.doFilter(req, resp);
} else if(uri.endsWith(".do") || uri.endsWith(".action")) {
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
resp.getWriter().write("unauthorized accessn");
System.out.println("unauthorized access");
return;
}
}
}
首先访问:http://localhost:8080/system/login, 此时正常匹配到登录路由。
在定义安全配置时,应尽量考虑全面,并测试配置方式是否可靠,同时也要检查使用的第三方组件自身是否存在有关漏洞,如CVE-2022-22978、CVE-2022-32532、CVE-2023-20860等。
public String delete(HttpServletRequest request, Long id)
throws Exception {
try {
userManager.delete(id);
request.setAttribute("msg", "删除用户成功");
} catch (ServiceException e) {
// logger.error(e.getMessage(), e);
request.setAttribute("msg", "删除用户失败");
}
return list(request);
配置 Shiro 的权限注解:
@RequiresPermissions(“user:delete”) // 表示当前用户必须拥有 “user:delete” 权限
@RequiresRoles(“admin”) // 表示当前用户必须拥有 “admin” 角色
public class UserService {
"user:delete") (
public void deleteUser(String username) {
// 删除用户的逻辑
}
"admin") (
public void deleteAllUsers() {
// 删除所有用户的逻辑
}
}
2024年6月24日
洞源实验室