Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Blazor属性中的未转换字符串_.net_Security_Encoding_Blazor_Xss - Fatal编程技术网

.net Blazor属性中的未转换字符串

.net Blazor属性中的未转换字符串,.net,security,encoding,blazor,xss,.net,Security,Encoding,Blazor,Xss,我目前正在用Blazor(服务器)研究XSS的可能性和危险性 通常,Blazor会对字符串进行自动输出编码。我认为,这可以通过使用类来避免 这对于正常文本输出很有效,但如果变量在属性内则不行。如果这是我的模板 <div class="page @(myString)"> @(myString) </div> @code { MarkupString myString = new MarkupString("\" foo&qu

我目前正在用Blazor(服务器)研究XSS的可能性和危险性

通常,Blazor会对字符串进行自动输出编码。我认为,这可以通过使用类来避免

这对于正常文本输出很有效,但如果变量在属性内则不行。如果这是我的模板

<div class="page @(myString)">
@(myString)
</div>

@code {
   MarkupString myString = new MarkupString("\" foo");
}

@(myString)
@代码{
MarkupString myString=新的MarkupString(“\”foo”);
}
然后渲染输出变为


您在Razor文件中编写的关于布局的所有内容都将转换为对
RenderTreeBuilder
的调用。此类有一个方法用于
公共void AddContent(int sequence,MarkupString markupContent)
和另一个方法用于
公共void AddContent(int sequence,object?textContent)
。但是,对于属性,
标记字符串
类没有专家重载。因此,您体验到相同的变量在用作属性时会被编码,但在用作内容时不会被编码

作为参考,请看一下课程

从这里开始,它很快进入Blazor渲染的核心。我不是这个领域的专家,但我没有找到任何方法来绕过属性值的默认HTML编码