我对如何“保护”数据库的信息以进行连接有一些疑问。 有一点我可以以更安全的方式访问数据库?休息Api? 或者,如果有人可以告诉我在代码上发送访问权限更安全
提前致谢
config = {
'user': 'user',
'password': 'password.',
'host': 'localhost',
'database': 'files_to_check',
'raise_on_warnings': True,
}
try:
# Try to connect to database
cnx = mysql.connector.connect(**config)
# Pointer of the sql
cursor = cnx.cursor()
# Query to get the files from the database
query = ("SELECT filename FROM filenames")
queryhash = ("SELECT hash FROM filenames")
# Execute the query
cursor.execute(query)
# select all the filenames from database
# array to fill with the files from the database
files_to_check = [str(row[0]) for row in cursor.fetchall()]
cursor.close()
cursor = cnx.cursor()
cursor.execute(queryhash)
# array to fill with the hash from the database
hash_to_check = [str(row[0]) for row in cursor.fetchall()]
# Error definition on connection
except mysql.connector.Error as err:
# Check username and password
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("[*] Username or password are invalid")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
# Check if database that are connection exists
print("[*] Database does not exist")
else:
print(err)
else:
cnx.close()
答案 0 :(得分:3)
一种方法是使用外部配置文件来存储用户,密码和其他敏感信息。
然后使用操作系统的权限系统限制对该文件的访问,以便您的应用程序可以读取该文件,但其他无特权的用户则不能。
还要确保使用与数据库的SSL连接。
您还应该查看身份验证插件。
答案 1 :(得分:3)
我猜你的问题是如何不必在代码中包含数据库信息(主机,端口,密码等)。我想说两种最简单的方法是:
import os
config = {
'user': os.getenv('DB_USER'),
'password': os.getenv('DB_PASSWORD'),
'host': os.getenv('DB_HOST'),
'database': os.getenv('DB_DATABASE'),
'raise_on_warnings': os.getenv('DB_DATABASE', 'true') == 'true',
}
import json
with open('config.json') as file:
config = json.load(file)