Ответ 1
Если вы используете механизм шаблонов Razor:
@Html.Raw(mystring)
Я делаю приложение в MVC3, я храню строку в базе данных в этом формате
<a href='path'>Text</a> Happy
Поле сохраняется правильно, но я должен отображать его на веб-странице с гиперссылкой, например
Текст Счастливый
но в настоящее время он отображается как
<a href='path'>Text</a> Happy
Как я могу отобразить эту строку как HTML на веб-странице?
Если вы используете механизм шаблонов Razor:
@Html.Raw(mystring)
Если вы используете Razor, вы можете использовать @Html.Raw()
в соответствии с рекомендацией Phil Haack
его лучше вы кодируете HTML, прежде чем хранить его в базе данных. Если вы используете .Net Framework 4, попробуйте этот
String TestString = "This is a <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);
См. msdn
В противном случае используйте анти-xss-библиотеку
Его работа похожа на магию и очень проста в реализации. Un-Encoded не только опасен, так как может вызвать атаки XSS, но также вызывает проблемы с рендерингом на странице html fornt.
Надеюсь, что это поможет.
Я бы действительно советовал делать это, потому что очень сложно защищать от проблем с инъекцией script.
Если вы считаете, что если вы думаете, что можно управлять, вы должны иметь возможность использовать @Html.Raw для рендеринга текста без экранирования.
Если вы не используете бритву,
и string text = "<a href='path'>Text</a> Happy";
Затем вы хотите <%= text %>
, а не <%: text %>
Как говорили другие, это не считается отличной практикой из-за HTML-инъекций, но кажется, что инъекция HTML - это ваше намерение.