Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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
C# 如何返回标签仍在其中的字符串?_C#_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 如何返回标签仍在其中的字符串?

C# 如何返回标签仍在其中的字符串?,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我将此作为一个简单的测试: @functions { private MvcHtmlString helloWorld() { return Html.EditorFor(m => m.Work.Description); } } <script type="text/javascript">console.log(@helloWorld().ToString());</script> 如何返回形式为的字符串 &lt;input class=

我将此作为一个简单的测试:

@functions {
 private MvcHtmlString helloWorld()
 {
    return Html.EditorFor(m => m.Work.Description);
 }
}
<script type="text/javascript">console.log(@helloWorld().ToString());</script>
如何返回形式为的字符串

&lt;input class=&quot;text-box single-line&quot; id=&quot;Work_Description&quot;
name=&quot;Work.Description&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;
<input class="test-box single-line" id="Work_Description" name="Work.Description"
type="text" value="" />

使用
@Html.Raw
。请注意,如果helloWorld().ToString()包含危险代码,则可能是安全问题

<script type="text/javascript">console.log(@Html.Raw(helloWorld().ToString()));</script>
console.log(@Html.Raw(helloWorld().ToString());

使用
@Html.Raw
。请注意,如果helloWorld().ToString()包含危险代码,则可能是安全问题

<script type="text/javascript">console.log(@Html.Raw(helloWorld().ToString()));</script>
console.log(@Html.Raw(helloWorld().ToString());

凯文是对的。在属性的模型中的[AllowHtml]属性中还有一点需要注意,以及使用AntiXSSLibrary进行跨站点攻击。在这里可以找到一个很棒的视频:

凯文是对的。在属性的模型中的[AllowHtml]属性中还有一点需要注意,以及使用AntiXSSLibrary进行跨站点攻击。您可以在这里找到一个很棒的视频:

很酷,非常好用,谢谢。我会注意保护输入。然而,我要指出的是,在Chrome等现代浏览器中,恶意用户可以在页面呈现后按自己的感觉将
注入页面,甚至可以编辑
的后期操作。在这方面,如果存在安全风险,那么无论使用
Html.Raw
,都可能存在安全风险。你有没有一个例子说明
Html.Raw
是如何被恶意使用的,并且是以一种简单的注入无法做到的方式使用的?我不是安全专家,但我知道如果你直接从用户那里获取输入(比如从页面上的评论部分),然后使用@Html.Raw将内容输出回页面,这将是一个安全问题。用户将能够输入任何脚本,并让查看该脚本的所有用户在您的页面上执行该脚本。关于您关于允许用户插入页面的浏览器的评论,这只允许他们插入在自己的浏览器上呈现的页面,而不是其他用户的浏览器或服务器上呈现的页面,因此这不是真正的安全风险。这一点很好。但是如果输出允许这样的注入的用户输入,那将是非常愚蠢的:)当尝试使用DropDownFor时,这不起作用,因为所有选项都出现在新行上,这会导致javascript中出现错误。如果返回的字符串包含换行符,有没有关于如何封装它的想法?我不是JavaScript人,所以我恐怕在这方面帮不了你。也许可以发布另一个问题来解决这个问题。很酷,这很好用,谢谢。我会注意保护输入。然而,我要指出的是,在Chrome等现代浏览器中,恶意用户可以在页面呈现后按自己的感觉将
注入页面,甚至可以编辑
的后期操作。在这方面,如果存在安全风险,那么无论使用
Html.Raw
,都可能存在安全风险。你有没有一个例子说明
Html.Raw
是如何被恶意使用的,并且是以一种简单的注入无法做到的方式使用的?我不是安全专家,但我知道如果你直接从用户那里获取输入(比如从页面上的评论部分),然后使用@Html.Raw将内容输出回页面,这将是一个安全问题。用户将能够输入任何脚本,并让查看该脚本的所有用户在您的页面上执行该脚本。关于您关于允许用户插入页面的浏览器的评论,这只允许他们插入在自己的浏览器上呈现的页面,而不是其他用户的浏览器或服务器上呈现的页面,因此这不是真正的安全风险。这一点很好。但是如果输出允许这样的注入的用户输入,那将是非常愚蠢的:)当尝试使用DropDownFor时,这不起作用,因为所有选项都出现在新行上,这会导致javascript中出现错误。如果返回的字符串包含换行符,有没有关于如何封装它的想法?我不是JavaScript人,所以我恐怕在这方面帮不了你。也许可以发布另一个问题来解决这个问题。在所有
MvcHtmlString
函数的返回行中,使用:
return MvcHtmlString.Create(stringValue)
@Tohid-这里不是这种情况,因为
Html.EditorFor
返回一个
MvcHtmlString
。在所有
MvcHtmlString
函数的返回行中,使用:
return MvcHtmlString.Create(stringValue)
@Tohid-这里不是这种情况,因为
Html.EditorFor
返回一个
MvcHtmlString