我遇到了非常有趣的事情。 MySQL忽略varchar
和char
中的空格。
因此,如果您插入此'a '
和'a'
您将有2条记录都包含'a'
同样适用于select
Where col='a '
将返回两个插入的行
如果您将col1
设为唯一,则插入'a'
和'a '
会引发错误。
如果插入字符串的长度超过varchar
的长度,即col1
具有varchar(5)
,插入也会截断数据,这可能会使很多系统容易受到攻击},插入'12345'
和'123456'
会产生2条记录'12345'
。
因此,例如,如果您尝试使用管理员的电子邮件'a@a.b'
创建帐户并使用'a@a.b thiswilbetruncuateddeutovarcharlength'
,那么从技术上讲,您的帐户的电子邮件与管理员相同,(此示例为最近的IPBoard漏洞可以在这里找到:http://www.exploit-db.com/exploits/25441/)
我也这样做了吗?因为我无法在网上找到mch,所以有人可以提供更多的背景信息:(
谢谢!