.net Blazor属性中的未转换字符串
我目前正在用Blazor(服务器)研究XSS的可能性和危险性 通常,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
<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编码