Как убежать в Erazor?
Я новичок в Haxe, и я пытаюсь экспериментировать с Ufront. У меня проблема с использованием шаблонов Erazor: я не понимаю, как избежать html при выводе переменных.
С помощью этого простого шаблона:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Users list</title>
</head>
<body>
<ul>
@for(user in users)
{
<li>@user.name</li>
}
</ul>
</body>
</html>
если какой-либо пользователь имеет имя<script>
', тогда шаблон просто выведет его имя.
Как я могу правильно html escape в Erazor?
2 ответа
Ufron автоматически включает вспомогательный класс, который содержит нужный метод:
<li>@Html.encode(user.name)</li>
Благодаря любезной помощи Франко, я написал страницу на сайте ufront, чтобы объяснить, как убежать из HTML в ufront. Я поставил здесь в качестве ответа для всех, кто заинтересован...
Как html экранировать аргументы вида
Для того чтобы html экранировал аргумент в ваших представлениях erazor, вы можете просто использовать вспомогательный метод Html encode().
Предположим, ваш аргумент называется pageContent и имеет значение:
<script>
alert("BAD things could happens if you don't properly escape!!");
</script>
вы можете избежать этого, используя следующий код:
@Html.encode(pageContent)
Ваш шаблон будет безопасно отображен как
<script>
alert("BAD things could happens if you don't properly escape!!");
</script>
Html.encode() внутренне использует StringTools.htmlEscape(), чтобы избежать его аргумента