2010-05-27 103 views
8

由于电子邮件地址的有效字符太多,是否有任何有效的电子邮件地址本身可能是XSS攻击或SQL注入?我在网上找不到关于此的任何信息。有效的电子邮件地址 - 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 [email protected],除了空格不允许。所有SQL注入都需要空格吗?

回答

12

空间是允许的,但是,这样"'OR 1=1--"@gmail.com是一个有效的E-mail地址。此外,它可能不太关注,但是从技术上来说,这些都是有效的E-mail地址:

' BAD SQL STUFF -- <[email protected]> 
[email protected] (' BAD SQL STUFF --) 

即使这是不可能的,还是有没有理由,你不应该使用paramaterized查询中并编码显示给用户的所有用户输入数据。

+0

可以使用http://isemail.info/来检查您喜欢的任何电子邮件地址,或者使用过滤器验证电子邮件等一些PHP功能,只使用过滤器注射电子邮件地址进行测试。根据isemail.info,第一个地址是无效的,第二个地址是“地址在消息中有效,但不能未经修改用于信封” – Kzqai 2012-04-26 23:11:51

-5
/^[a-z0-9.-_+]@[a-z0-9.-]$/i 

我认为像所有电子邮件地址的99.9999%匹配;),如果他们用引号引起

+1

btw。这只是为了验证文本是否不包含xss/sql注入等 - 它不是一种验证电子邮件地址的方法。 – Tobias 2010-05-27 18:29:18

相关问题