Web 资源的用户凭据是否需要 Html.Encode?

Is Html.Encode Needed on User Credentials For Web Resource?

我们有一个简单的实用程序,可以通过 HttpWebRequest 为用户访问 Web 资源。

此网络资源需要登录凭据(用户名/密码)。凭据用于访问资源,不存储在数据库中。

Html.Encode 用于帮助防止 XSS 攻击。然而,当这些凭据被编码时,它们可能会被破坏。例如,如果密码是 john&123,那么使用 Html.Encode 会将密码更改为 john&123,有效地破解密码。

我们如何在防止 XSS 的同时安全地使用用户输入的用户名和密码字符串?

或者,这不是什么大问题,因为在客户端浏览器上显示 用户输入时,XSS 主要是一个问题吗?如果是这样,在临时利用用户输入访问 Web 资源时是否有任何需要注意的(安全方面的)?

您可以使用 HttpUtility.HtmlDecode() 或 WebUtility.HtmlDecode() 来取回原始字符串。

但是,是的,如果字符串在页面上呈现,您只需要担心 XSS,如果字符串用于命中数据库的查询,则只需 SQL 注入。在您的情况下,这听起来像是用户将凭据输入到表单中,您的后端使用它来访问外部 Web 服务,然后被丢弃。如果是这样,XSS/SQL 注入是外部 Web 服务的问题,而不是你的问题。