4个单词,谷歌返回16个SQL注入漏洞
一名开发者出于好奇在 Google 使用php mysql email register作为关键词进行了搜索。很显然,这是在查找如何使用 PHP 和 MySQL 实现邮箱注册的功能。
搜索结果返回了教程、操作方法、代码片段等内容。不过大多数结果都包含有错误的 SQL 语句,例如:
<pre class="wp-block-preformatted" style="box-sizing: border-box; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: rgb(255, 255, 255); overflow-wrap: break-word; white-space: pre-wrap; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">// Don't do this!
mysqli_query("SELECT * FROM user WHERE id = '" . $_POST["user'] . "'");</pre>
根据对谷歌搜索结果的整理,这些 SQL 语句可大致分为四种类型:
- SQL 查询中的所有参数都被转义
- 只在绝对必要的情况下才对传入的参数进行转义
- 作者尝试进行了部分转义,但存在漏洞
- 没有任何转义逻辑
这名开发者表示,当他发现一个搜索结果中存在有问题的 SQL 语句时,就会跳到浏览下一个结果。上面就是根据此过程整理出来的 30 条搜索结果,其中部分答案包含 SQL 注入语句。
对此他认为,大多数 Google 搜索结果的质量十分低下。有些搜索结果就是通过 SEO 优化而排在前面的“扯淡”教程。
同时,这篇文章也引起了程序员的广泛讨论(reddit, Hacker News),不过大家关注的重点也纷纷转移到了编程语言 PHP 上。
但作者本意其实是希望程序员能甄别互联网上随手可得的任何资料,毕竟这里面鱼龙混杂。尤其要注意那些通过 SEO 优化而排名靠前的搜索结果,因为它们往往就是“雷区”。