SQL注入
SQL注入是一种攻击手段,它指的是使用构造恶意的SQL语句,欺骗服务器执行SQL命令,让后台的数据库去解析,从而达到入侵目标网络,获取敏感信息的攻击手段。
如何防止sql注入
- #{}是经过预编译的,是安全的,${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。
- MyBatis的SQL预编译是JDBC中的PreparedStatement类在起作用,PreparedStatement是Statement的子类,它的对象包含了编译好的SQL语句。这种“准备好”的方式不仅能提高安全性,而且在多次执行同一个SQL时,能够提高效率。原因是SQL已编译好,再次执行时无需再编译了。
- $ {} 这样格式的参数会直接参与SQL编译,从而不能避免注入攻击。但涉及到动态表名和列名时,只能使用${}这样的参数格式。所以,这样的参数需要我们在代码中手工进行过滤处理来防止注入。