Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有效的电子邮件地址-XSS和SQL注入_Php_Xss_Sql Injection_Email Validation - Fatal编程技术网

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

Php 有效的电子邮件地址-XSS和SQL注入,php,xss,sql-injection,email-validation,Php,Xss,Sql Injection,Email Validation,由于电子邮件地址有如此多的有效字符,是否有任何有效的电子邮件地址本身可能是XSS攻击或SQL注入?我在网上找不到关于这个的任何信息 电子邮件地址的本地部分 可以使用以下任一ASCII字符: 大写和小写英文字母(a-z,a-z) 数字0至9 字符!#$%&'*+-/=?^#{|}~ 性格。(点、句号、句号)但前提是它不是最后一个 字符,并且前提是它不出现两个或两个以上的字符 连续多次(如约翰.)。。Doe@example.com) 我不是问如何防止这些攻击(我已经在使用参数化查询和转义/HT

由于电子邮件地址有如此多的有效字符,是否有任何有效的电子邮件地址本身可能是XSS攻击或SQL注入?我在网上找不到关于这个的任何信息

电子邮件地址的本地部分 可以使用以下任一ASCII字符:

  • 大写和小写英文字母(a-z,a-z)
  • 数字0至9
  • 字符!#$%&'*+-/=?^#{|}~
  • 性格。(点、句号、句号)但前提是它不是最后一个 字符,并且前提是它不出现两个或两个以上的字符 连续多次(如约翰.)。。Doe@example.com)

我不是问如何防止这些攻击(我已经在使用参数化查询和转义/HTML净化器),这更像是一个概念证明

首先想到的是
”或1=1--@gmail.com
,除了空格是不允许的。所有SQL注入都需要空格吗

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

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

如果空格用引号括起来,则允许使用空格,因此
“'或1=1--”@gmail.com
是一个有效的电子邮件地址。另外,这可能不太重要,但从技术上讲,这两个都是有效的电子邮件地址:

' BAD SQL STUFF -- <fake@ryanbrunner.com>
fake@ryanbrunner.com (' BAD SQL STUFF --)
'糟糕的SQL内容--
fake@ryanbrunner.com(“糟糕的SQL内容--”)

即使这是不可能的,你也没有理由不使用参数化查询和编码所有显示给用户的用户输入数据。

btw。这只是为了验证文本是否包含xss/sql注入等-这不是验证电子邮件地址的方法。可以使用来检查你喜欢的任何电子邮件地址,或者只需通过一些php函数(如filter validate email)在可注入电子邮件地址上使用过滤器进行测试。根据isemail.info,第一个地址无效,第二个地址为“地址在邮件中有效,但未经修改不能用于信封”