emr*_*mru 18 database security django permissions
我正在寻找如何正确配置数据库权限以保护Django应用程序的链接或答案?为了清楚起见,我正在寻找专门处理数据库授权的材料,而不是Django框架本身的权限.
我通常:
grant all privileges on my_db.* to my_user@localhost identified by 'my_user_pass'
grant all privileges on test_my_db.* to my_user@localhost identified by 'my_user_pass'
Run Code Online (Sandbox Code Playgroud)
我想如果django中有一个bug,你可能会打开你的数据库到可怕的东西,但如果django中有一个很大的安全漏洞你就会遇到其他问题.
django最低需要选择,插入,更新和删除操作.如果你正在使用test或syncdb,你还需要能够创建表和索引(以及加载sql fixture的文件权限).
因此,对于mysql数据库,我猜测最佳权限集可能是select,insert,update,delete,create,index和file.如果你想获得真正的细节,你可以选择性地在表级别(而不是数据库级别)授予这些权限.
就个人而言,我觉得grant all ...
更容易打字.
小智 8
我刚刚用 MySQL 测试了初始设置。对于python manage.py migrate
你至少需要简单的操作如下补助(如果哟使用DB-准备):
而且,顺便说一句 - 安全很重要。您可以通过限制系统暴露来减少攻击影响。在这种情况下 - 您可以限制“DROP” - 这是相当大的优势。如果您留下一些具有 SQL 注入能力的棘手漏洞 - 您可能会减少损害。我将来会研究删除 DELETE 关键字是否不会造成任何伤害 - 这也会限制潜在的威胁。只是因为我们都会不时留下错误:)
来自django文档:
https://docs.djangoproject.com/en/dev/topics/install/
如果您计划使用Django的manage.py syncdb命令为您的模型自动创建数据库表(在首次安装Django并创建项目之后),您需要确保Django有权在数据库中创建和更改表''重新使用; 如果您打算手动创建表,则可以简单地授予Django SELECT,INSERT,UPDATE和DELETE权限.在某些数据库上,Django在syncdb期间需要ALTER TABLE权限,但一旦syncdb创建它就不会在表上发出ALTER TABLE语句.创建具有这些权限的数据库用户后,您将在项目的设置文件中指定详细信息,有关详细信息,请参阅DATABASES.