由于电子邮件地址的有效字符数量太多,是否有任何有效电子邮件地址本身可能是XSS攻击或SQL注入?我在网上找不到任何相关信息。
电子邮件地址的本地部分 可以使用以下任何ASCII字符:
- 大写和小写英文字母(a-z,A-Z)
- 数字0到9
- 人物! #$%& '* + - / =? ^ _` {| }〜
- 性格。 (点,句号,句号),但它不是最后一个 字符,并提供它不会出现两个或 连续多次(例如John..Doe @ example.com)。
http://en.wikipedia.org/wiki/E-mail_address#RFC_specification
我不是在问如何防止这些攻击(我已经在使用参数化查询和转义/ HTML净化器),这更像是一个概念验证。
首先想到的是'OR 1=1--@gmail.com
,但不允许使用空格。所有SQL注入都需要空格吗?
答案 0 :(得分:12)
如果将空格括在引号中,则允许使用空格,因此"'OR 1=1--"@gmail.com
是有效的电子邮件地址。此外,它可能不太重要,但从技术上讲,这些都是有效的电子邮件地址:
' BAD SQL STUFF -- <fake@ryanbrunner.com>
fake@ryanbrunner.com (' BAD SQL STUFF --)
即使这是不可能的,仍然没有理由不使用参数化查询并对用户输入的所有数据进行编码。
答案 1 :(得分:-5)
/^[a-z0-9.-_+]@[a-z0-9.-]$/i
我认为匹配所有电子邮件地址的99.9999%;)