Как убежать в 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)

Ваш шаблон будет безопасно отображен как

&lt;script&gt;
    alert("BAD things could happens if you don't properly escape!!");
&lt;/script&gt;

Html.encode() внутренне использует StringTools.htmlEscape(), чтобы избежать его аргумента

Другие вопросы по тегам