我可以安全地替换 Environment.NewLine
吗?与 <br />
就像我在下面的扩展方法中一样?
public static string HtmlBreaks(this string s)
{
if (string.IsNullOrEmpty(s)) { return s; }
return s.Replace(Environment.NewLine, "<br />");
}
我是这样使用的:
@Html.Raw(Model.Details.HtmlBreaks())
让我更清楚一点。 这安全吗? 我用 HTML 替换文本然后发出 Raw
是否违反了任何互联网安全准则?方法? 我打开这个网站是否会受到任何攻击?
最佳答案
这不安全。以包含详细信息的示例文本为例:
<script>alert('a')</script>
HTML.Raw
会将其输出为脚本标签,浏览器将执行脚本。如果用户提供详细信息文本,这将允许他们将脚本注入(inject)您的页面(一种基本的 XSS 攻击)。
如果你想用 <br>
替换换行符在你看来做。例如,我的 Controller 可能如下所示:
MyModel model = new MyModel();
model.Description = "Hello \r\n how are you today \r\n <script>alert('a')</script> \r\n";
return View(model);
在我看来,我可以这样做:
@{ var lines = Model.Description.Split('\r');
foreach (var line in lines)
{
@line.Trim() <br />
}
}
关于c# - 我可以用这样的中断标记安全地替换新行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212097/