Mik*_*oud 3 html c# security asp.net-mvc
我可以安全地替换Environment.NewLine,<br />就像我在以下扩展方法中一样吗?
public static string HtmlBreaks(this string s)
{
if (string.IsNullOrEmpty(s)) { return s; }
return s.Replace(Environment.NewLine, "<br />");
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
@Html.Raw(Model.Details.HtmlBreaks())
Run Code Online (Sandbox Code Playgroud)
让我更清楚.这样安全吗? 我是否通过用HTML替换文本然后发布Raw方法来破坏任何互联网安全准则?我打开这个网站的任何攻击吗?
这不安全.以包含以下内容的详细信息为例:
<script>alert('a')</script>
在HTML.Raw将输出,作为一个脚本标签,浏览器将执行脚本.如果用户提供详细信息文本,则允许他们将脚本注入您的页面(基本XSS攻击).
如果要<br>在视图中替换换行符,请执行此操作.例如,我的控制器可能如下所示:
MyModel model = new MyModel();
model.Description = "Hello \r\n how are you today \r\n <script>alert('a')</script> \r\n";
return View(model);
Run Code Online (Sandbox Code Playgroud)
在我看来,我可以这样做:
@{ var lines = Model.Description.Split('\r');
foreach (var line in lines)
{
@line.Trim() <br />
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |