我刚刚开始使用 AntiXSS (4.3.0),主要是按照这里@Encoder.JavaScriptEncode
的描述使用。
我从 Nuget 安装了 AntiXSS,然后添加encoderType="Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary"
到<httpRuntime
我的 Web.config 中。
在我看来,我有以下行(在<script>
标签内):
var userId = @Encoder.JavaScriptEncode(User.Identity.GetUserId());
我希望输出
var userId = 'user-id';
而是输出:
var userId = 'user-id';
我认为这是因为 Razor 正在尝试清理 HTML,因此将单引号编码为'
.
那么解决方案就是将其包装在 中Html.Raw()
,但在我关注的帖子中,他从未这样做(而是在 Javascript 中用单引号将整个内容包装起来)。
我的问题是 - 你应该需要打电话@Html.Raw(Encoder.JavaScriptEncode(data))
,还是我的设置有问题?
谢谢!