Проблемы безопасности с m.trust () - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь использовать библиотеку diff , чтобы регистрировать истории редактирования сообщений пользователя для моей страницы. Эта библиотека дает мне длинные JSON данные для хранения различий в моей базе данных, и я использую функцию PHP того же хранилища, чтобы преобразовать ее в табличное представление с некоторыми кодами HTML. Вот пример выходных данных:

<table class="diff-wrapper diff diff-html diff-inline">
    <thead>
        <tr>
            <th colspan="2">Differences</th>
        </tr>
    </thead>
    <tbody class="change change-rep">
        <tr data-type="-">
            <th class="sign del">-</th>
            <td class="old">Donec rutrum, odio id tempus consequat, nunc nisi pulvinar dolor, ac faucibus massa erat non est. Integer blandit, eros quis sodales vulputate, erat ex euismod nisl, gravida vestibulum nibh elit pretium quam. Mauris turpis tortor, lacinia vitae purus eget, vulputate testing mollis felis.</td>
        </tr>
        <tr data-type="+">
            <th class="sign ins">+</th>
            <td class="new">Donec rutrum, odio id tempus consequat, nunc nisi pulvinar dolor, ac faucibus massa erat non est. Integer blandit, eros quis sodales vulputate, erat ex euismod nisl, gravida vestibulum nibh elit pretium quam. Mauris turpis tortor, lacinia vitae purus eget, vulputate testing mollis felis
                <ins> testing</ins>.
            </td>
        </tr>
    </tbody>
</table>

А затем я запрашиваю эти HTML данные из URL (например, / post / history / {id}), отображая ответ с помощью функции m.trust(). Эта библиотека различий также очищает HTML от пользовательского ввода непосредственно перед созданием JSON данных, поэтому есть только <table>, <tr>, <td>, <tbody>, <thead>, <ins>, <del> теги для рендеринга в front-end.

Мой вопрос: нужно ли мне беспокоиться об этом подходе? Может ли пользователь перейти к этому выводу HTML непосредственно перед тем, как он достигнет функции m.trust(), и ввести неантизированный HTML? Можно ли поиграть с ответом URL до того, как что-то произойдет?

1 Ответ

0 голосов
/ 11 февраля 2020

Как только код передается пользователю по HTTP, пользователь может делать с ним все, что ему захочется: например, по этой причине Facebook регистрирует сообщение в консоли, чтобы предупредить неопытного пользователя не использовать инструменты dev для делать то, что другие просили их. Но учитывая, что пользователь может написать и выполнить любой опасный код, который ему нужен, я бы не стал беспокоиться о том, как это относится к мифрилу.

Короче, вам не о чем беспокоиться, если вы доверяете источнику насколько вы можете судить, этот код создается внутренним кодом на вашем сервере, поэтому этого достаточно для этих целей.

Если у вас есть еще вопросы о проблемах в этом домене, вы можете задать их в Мифриловом чате: https://gitter.im/mithriljs/mithril.js?source=orgpage

...