【问题标题】:Why a MYSQL string that contains ' is not secure?为什么包含 ' 的 MYSQL 字符串不安全?
【发布时间】:2013-03-14 10:55:24
【问题描述】:

伙计们,我是 mysql 安全新手,当我在 google 上搜索这个问题时,很多人警告我们应该检查 mysql 字符串,看看它是否包含 ',否则你有风险得到mysql数据库注入,但他们没有告诉为什么?你能告诉我原因吗?非常感谢。

【问题讨论】:

  • 您需要在将字符串插入 mySQL 数据库之前对其进行转义。就这样。没有必要查看它是否包含'。如需更多信息,请告诉我们您使用什么平台来访问数据库 - 每种编程语言/数据库库都有其转义数据的方法。
  • 使用一些获取字符串并直接将它们用作批处理 SQL 的 API 是危险的。但是你今天很少使用这样的 API。这完全取决于您的应用程序代码和库。
  • 有时可以(并且可能更安全/更快)只使用传递参数的整数值。例如,当它是表上一行的 id 字段时。来自客户端的任何东西都可能是可疑的(例如,编辑下拉列表中的可用选项以添加可疑选项是很简单的)
  • 我用的是没有库的PHP(或者我自己写的MYSQL库),我只是想开发一个简单的博客CMS,我对mysql的安全性一无所知。

标签: mysql database database-security


【解决方案1】:

假设您有一个用户表和一个登录表单。通常当用户登录时,您想确定他是否有帐户:

这是非常糟糕的 PHP:

"SELECT * FROM users WHERE username = '$username' AND password = MD5('$password');"

现在你有了一个用户名的用户

1';DROP TABLE 用户;#

会发生什么?

【讨论】:

  • 哦,天哪。我现在知道原因了!非常感谢,除了过滤',还有什么需要注意的吗?再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多