MySQL 注入预防:转义字符以获得最大安全性
预防 SQL 注入对于保护数据库免受恶意攻击至关重要。使用 mysql_real_escape_string() 函数时,字符、n、r、\、'、" 和 Z 会被转义以防止注入尝试。
但是,OWASP.org 的 ESAPI 安全库包含用于转义的附加字符,包括 b(退格键)和 t(制表符)。问题是:为什么包含这些字符以及它们真的有必要吗?
转义预防中的制表符和退格符
ESAPI 转义机制中包含 b 和 t 字符可能与使用这些字符进行注入尝试的可能性有关:
攻击者发送包含以下附加文本文件的电子邮件。查询:
INSERT INTO students VALUES ("Bobby Tables",12,"abc",3.6);
这似乎是一个无害的查询,但是,攻击者巧妙地在查询之前放置了退格字符,如下所示:
DROP TABLE students;\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
当接收者发送文件时。并将其传输到MySQL,退格字符覆盖无害的查询,导致恶意DROP TABLE学生;命令在收件人不知情的情况下执行。
此外,制表符 (t) 可能会用于对齐查询中的恶意代码,从而增强其可读性并使其更难以检测。因此,转义这些字符可以针对潜在的注入尝试提供额外的保护。
以上是为什么 ESAPI 在 SQL 注入防护中转义退格键 (\\b) 和制表符 (\\t) 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!