xer*_*raa 3 mysql security postgresql sql-injection
面对PostgreSQL不安全的一些大胆的主张(同时欢呼MySQL的安全性)我想得到别人的意见:
我已经说过PostgreSQL比MySQL更具安全感(支持角色,更多的身份验证方法......),但数据库本身对应用程序的安全性影响非常小.或者我在这里忽略了任何争论?
[1] MySQL是否比PostgreSQL(在Perl/DBI下)更能抵抗SQL注入攻击?
PS:MySQL和PostgreSQL都是很棒的产品 - 不需要任何非安全相关的讨论;-)
Fra*_*ens 11
"默认情况下,PostgreSQL可能是最安全的数据库......"
由于多查询语句,PostgreSQL并不是不安全的,这是正常的功能,但在较旧的MySQL驱动程序中不可用.MySQLi驱动程序还支持多查询语句.SQL Server,Oracle,DB2和几乎所有其他数据库都有这个选项,MySQL实现它的时间很晚.迟到,并不意味着"安全".
SQL注入是程序员的一个主要错误,而不是数据库.键盘背后的主要问题是,应该责怪.
使用预准备语句和STOP信任用户输入,这就是如何避免SQL注入和其他安全问题.存储过程也可以帮助降低SQL注入的影响,这些在PostgreSQL中使用起来非常方便.在SQL中有动态表或列名时,还要检查quote_ident().MySQL缺乏这样的功能.
PostgreSQL具有ROLES和继承角色来设置和维护权限.如果您向所有人赠送超级用户权限(root),则会产生问题.如果你不这样做,那你就安全了.超级用户权限中没有已知的错误,这些权限中关于安全漏洞的声明听起来像FUD,因为没有证据.
你检查过SE PostgreSQL了吗?这是更高层次的安全性.PostgreSQL版本9.1(此时的测试版)也为SE提供了新选项.MySQL只能梦想这种安全级别.
我个人认为,使用不同数据库技术的安全辩论通常是完全没有根据的,在许多情况下,那些快速指出其中一个或另一个的人可能没有意识到数据泄漏的原因不是因为数据库,但因为他们没有正确保护他们的应用程序,但不能承认错误,因此将责任推到别处.至少这是迄今为止我对任何数据库技术的所有安全性辩论.
一个很好的例子,SQL注入根本不是数据库错误.SQL是一种标准化语言,MySQL和PostgreSQL(以及Oracle和其他人......)都接受它.SQL注入是对结构化查询语言的操纵,而不是服务器安全漏洞.应用程序没有正确清理输入的事实是它的原因.您不能争辩说使用相同标准化语言的一个数据库对于意外查询操作的安全性要低于使用相同技术的另一个数据库,因此无论谁告诉您SQL注入对这两个数据库之一的问题更明显不明白SQL注入到底是什么.
关于以root身份运行PostgreSQL,您不应该以root身份运行.作为root用户在服务器上运行服务总是一个坏主意,同样,与服务器无关.
我对PostgreSQL的经验很少,但我会说MySQL有一个出色的权限系统,允许用户在选择列表客户端主机上的特定数据库列表上委派一组可用命令.PostgreSQL可能与此不同,但我很难接受与身份验证和用户帐户相关的安全性.
归档时间: |
|
查看次数: |
4847 次 |
最近记录: |