htmlspecialchars可以转义javascript吗?

som*_*ing 1 php escaping

我偶然发现了以下问题:

你们知道htmlspecialchars函数是否也从用户输入中转义了JavaScript吗?

谢谢

irc*_*ell 5

好吧,要回答您的问题,取决于情况。如果您正在做:

<p><?php echo htmlspecialchars($userInput); ?></p>
Run Code Online (Sandbox Code Playgroud)

然后他们将无法将脚本注入您的应用程序。

但是

如果您尝试这样做:

<script>
    var foo = '<?php echo htmlspecialchars($userInput); ?>';
</script>
Run Code Online (Sandbox Code Playgroud)

你是不是安全的。请参阅OWASP的XSS备忘单规则3 。

为了保护这一点,您需要使用JS感知的转义功能。如果只需要字符串文字,则可以对其进行json编码,但是我将使用ESAPI for PHP来解决这一问题。