有效的电子邮件地址 - XSS和SQL注入

时间:2010-05-27 18:01:53

标签: php xss sql-injection email-validation

由于电子邮件地址的有效字符数量太多,是否有任何有效电子邮件地址本身可能是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注入都需要空格吗?

2 个答案:

答案 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%;)