14

既然电子邮件地址有这么多有效字符,那么是否有任何有效的电子邮件地址本身可以是 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 注入都需要空格吗?

4

2 回答 2

17

如果用引号括起来,则允许使用空格,但是,"'OR 1=1--"@gmail.com有效的电子邮件地址也是如此。此外,这可能不是一个问题,但从技术上讲,这些都是有效的电子邮件地址:

' BAD SQL STUFF -- <fake@ryanbrunner.com>
fake@ryanbrunner.com (' BAD SQL STUFF --)

即使这不可能,您仍然没有理由不使用参数化查询并对所有显示给用户的用户输入数据进行编码。

于 2010-05-27T18:32:53.360 回答
-8
/^[a-z0-9.-_+]@[a-z0-9.-]$/i

我认为这与所有电子邮件地址的 99.9999% 相匹配;)

于 2010-05-27T18:28:26.223 回答