SQL注入
1、MySQL及SQL注入:通过网页获取用户输入的数据并将其插入一个MySQL数据库,就有可能发生SQL注入安全的问题;SQL注入就是通过把SQL命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令(要对用户输入的数据进行过滤处理)
2、防止SQL注入,需要注意以下要点:
- 不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双“-”进行转换
- 不要使用动态拼接sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取
- 不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
- 不要直接存放机密信息,加密或者hash掉密码和敏感的信息
- 应用的异常信息应该给出尽可能少的提示
SQL LIMIT
- 用来选取指定的条数数据
- SELECT … FROM … LIMIT number;
LIKE
- 用于搜索指定的模式
- SELECT * FROM user
WHERE name LIKE ‘m%’;
通配符
- 通配符与LIKE一起使用
- %:替代0个或多个字符;_:替代一个字符;
IN
SELECT *FROM user
WHERE name IN(‘AA’,‘hh’);
BETWEEN
- 选取结余两个值之间的数据范围的值
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
SQL连接
- INNER JOIN:关键字在表中存在至少一个匹配时返回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
2.LEFT JOIN:关键字从左表返回所有的行,即使右表没有匹配。如果右表中没有匹配,则数值为NULL
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
3.RIGHT JOIN:关键字从右表返回所有的行,即使左表中没有匹配。如果