【问题标题】:MySQL permissions and prepared statementsMySQL 权限和准备好的语句
【发布时间】:2013-09-24 03:03:15
【问题描述】:

我想知道是否有必要使用不同的 MySQL 用户权限,如果我使用准备好的语句和 PDO?

基本上我想要一个具有 SELECT 且仅 SELECT 权限的用户,以及一个可以使用 INSERT 的用户。

我知道准备好的语句是必须的,但是权限也一样吗?

【问题讨论】:

  • 你可以为此实现一个 PHP 逻辑,但我不明白这一点,如果你使用的是 MySQL 用户,而不是其他用户
  • 不,设置不同的权限是错误的做法,是治标不治本的。您可以根据需要创建不同的用户,但不要称之为保护措施。
  • 好吧,我希望用户拥有特定的权限,但如果准备好的语句足以保护系统,让用户的事情变得不必要,那似乎是在浪费精力
  • 尽管有准备好的语句,但用户的事情是不必要的。这个东西根本无法保护您的系统。 SQL 注入不仅限于漫画中愚蠢的删除表查询。

标签: php security pdo prepared-statement database-permissions


【解决方案1】:

对于大多数应用程序来说,只读 SQL 注入和读写 SQL 注入之间的区别是微乎其微的。您的数据库通常包含攻击者想要窃取的所有秘密,因此能够从数据库中读取这些秘密就足以结束游戏了。

拥有单独的读取器和写入器将使您的应用程序的活动数据库连接数量增加一倍。这可能会增加您遭受拒绝服务 (DoS) 攻击的风险。此外,它还使应用程序逻辑比它需要的更冗长。

如果您担心 SQL 注入的影响,只需使用准备好的语句即可。并确保您真的使用准备好的语句,not "emulated prepared statements"。请参阅 ircmaxell's answer here 了解为什么模拟的准备好的语句是邪恶的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多