0.前言
用户登入注册的流程其实很简单(不考虑安全需求的流程如下图),但作为用户安全的第一道防线,需要严格的安全措施。市面上常用的攻击手段有sql注入,csrf,xss等。
一.避免sql注入攻击
SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
1.1从url注入:
请求 URL:
POST
http://localhost:8080/login?username=张三&password=123456
1.2构建不合法请求
select * from user where username='张三' and password='' or 1=1 #’
1..3避免方法
、
使用参数化查询:避免直接将用户输入嵌入 SQL 查询中,而是使用预处理语句或参数化查询。 ORM(对象关系映射)功能,能够自动处理 SQL 查询并防止注入。
在java开发中就严格遵循这总,DAO(数据操纵层)-----JDBC-------数据源。DAO 层封装数据库操作,可以确保所有 SQL 查询都使用预处理语句,从而有效防止 SQL 注入攻击
编写数据类
public class Attribute {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String value;
}
数据接口类--数据库增删改查的函数已经配置好了
@NoRepositoryBean
public interface JpaRepository<T, ID> extends ListCrudRepository<T, ID>, ListPagingAndSortingRepository<T, ID>, QueryBy