今天,出于好奇,我用谷歌搜索了php mysql email register
.得到一些教程、操作方法和代码片段。但是大多数搜索结果包含有缺陷的数据库语句。例如:
// Don't do this!
mysqli_query("SELECT * FROM user WHERE id = '" . $_POST["user'] . "'");
存在的问题
- SQL 语句中的所有参数都被分类转义。
- 仅在绝对必要的情况下才转义传入的数据。
- 作者尝试了一些转义,但仍然存在漏洞。
- 没有任何逃逸逻辑。
节选部分查询结果:
# | Status | URL | Site | Notes |
---|---|---|---|---|
1 | 3 | link | CodeWithAwa | "SELECT * FROM users WHERE email='$email' LIMIT 1"; |
2 | 3 | link | Webslesson | WHERE user_activation_code = '".$user_activation_code."' |
3 | 1 | link | phppot | |
4 | 1 | link | Aaraf Academy | |
5 | 2 | link | CodingNepal |
我一找到至少一个容易SQL注入的地方,就跳到下一篇文章。当然,在这 30 个结果中还可以找到更多问题,这只是我粗略浏览的结果,只是专门寻找 sql 注入漏洞。
我的主要的收获是发现大多数 Google 搜索结果的低质量。简单来说,其中一些搜索结果完全就是胡说八道,不过是靠SEO优化成了“优质”搜索结果。