数据库安全管理和防止SQL注入攻击是非常重要的,以下是一些措施:
1.使用参数化查询,而不是拼接SQL语句。这样可以避免SQL注入攻击。
示例代码:
import sqlite3
# 使用参数化查询
def get_user_info(username, password):
conn = sqlite3.connect("mydb.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM user WHERE username=? AND password=?", (username, password))
user_info = cursor.fetchone()
cursor.close()
conn.close()
return user_info
2.限制数据库用户的权限,只授予最小必要的权限。
示例代码:
-- 创建只有SELECT权限的用户
CREATE USER "user1"@"%" IDENTIFIED BY "password1";
GRANT SELECT ON mydb.* TO "user1"@"%";
3.定期备份数据库,以防止数据丢失。
示例代码:
# 每天定时备份数据库
0 0 * * * mysqldump -u root -p mydb > /backups/mydb-$(date +\%Y-\%m-\%d).sql
4.使用防火墙和其他安全措施,限制外部访问数据库。
示例代码:
# 使用iptables限制外部访问
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
总之,数据库安全管理和防止SQL注入攻击需要综合考虑多种措施,以保护数据安全。