【问题标题】:Simple PHP XSS / Urlencode Question简单的 PHP XSS / Urlencode 问题
【发布时间】:2011-02-18 22:34:30
【问题描述】:

我有一个电子邮件地址参数,其中电子邮件地址以未编码方式传递,如下所示:

http://domain/script?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'])))

【问题讨论】:

  • 最好的办法是先用urldecode,然后用htmlspecialchars :) $email = htmlspecialchars( urldecode( $_GET['email'] ) );现在你可以使用 $email ;)
  • 不,我想你不明白。电子邮件地址未编码发送。
  • 按照 ahmet2106 的指示尝试 htmlspecialchars。
  • 这不起作用,因为加号仍会转换为空格。换句话说,输入字段看起来像“test test@gmail.com”。
  • 它被转换为一个空格,因为 URL 中的+代表一个空格。如果要保留空格等,则必须先对所有内容进行 URL 编码,然后再将其放入 URL。

标签: php xss urlencode


【解决方案1】:

如果要在输入字段的值中安全输出,需要先用htmlspecialchars进行htmlencode。

例子:

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

注意:如果您没有在输出内容周围使用双引号,则需要应用更多转义。 This page 解释了一切。

【讨论】:

  • 这不起作用,因为加号仍会转换为空格。换句话说,输入字段看起来像“test test@gmail.com”。
  • @Josha 那是因为您一开始就没有正确编码您的电子邮件。在 URL 中,+ 是一个空格。服务器收到的是test test@gmail.com 而不是test+test@gmail.com。如果您想确保某个 URL 的参数被正确编码,您需要使用 urlencode 对其进行转义。
【解决方案2】:

这行得通:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      按照凯文的建议使用emailaddress = urldecode($_GET['email']);。它会做任何你需要的。

      【讨论】:

      • 没有什么要解码的,因为电子邮件地址是未经编码发送的。因此 urldecode 什么都不做!
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多