繁体   English   中英

简单的PHP XSS / Urlencode问题

[英]Simple PHP XSS / Urlencode Question

我有一个电子邮件地址参数,其中电子邮件地址是未编码的,如下所示:

HTTP://域名/脚本email=test+test@gmail.com

什么PHP转义/编码将让我安全地在页面上的输入字段显示电子邮件地址?

我尝试的所有内容都会导致编码的字符显示而不是用户友好的电子邮件地址(即test%2Btest%40test.com)

更新 - 这是我尝试过的:

从? email = test + test@gmail.com转到:

urlencode($_GET['email']) = test+test%40test.com (@ sign is encoded)
htmlspecialchars($_GET['email']) = test test@test.com (lost the +)
htmlspecialchars(urlencode($_GET['email']) = test+test%40test.com (@ sign encoded)

回想一下,我正在尝试使用未编码的url电子邮件参数并将其安全地输出到输入字段的值,同时保持加号完整。

也许我应该试试这个?

str_replace("%40", "@", htmlspecialchars(urlencode($_GET['email'])))

如果要在输入字段的值中安全地输出它,则需要首先使用htmlspecialchars对其进行htmlencode。

示例:

<input type="email" name="email" value="<?php echo htmlspecialchars($_GET['email']); ?>"

注意:如果您没有对输出内容使用双引号,则需要应用更多转义。 这个页面解释了一切。

这有效:

str_replace("%40", "@", htmlspecialchars(urlencode($_GET['email'])))

你可能正在寻找urldecode() 这就是将%40,%2B等转换回普通字符的原因。

使用emailaddress = urldecode($_GET['email']); 正如凯文所说。 它会做你需要的任何事情。

如果您验证电子邮件并按原样写入,如果只接受电子邮件地址,该怎么办?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM