feat: harden localization against malicious HTML (#5703)

- Add a new script that proccess the localization files and verify that
they only contain HTML according to our strictly defined rules.
- This should make adding malicious HTML near-impossible.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5703
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
Gusted 2024-10-30 15:59:48 +00:00 committed by 0ko
commit dfe3ffc581
43 changed files with 361 additions and 151 deletions

View file

@ -934,7 +934,7 @@ select_permissions=Выбрать разрешения
permission_no_access=Нет доступа
permission_read=Чтение
permission_write=Чтение и запись
access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a %s>API</a>. Читайте <a %s>документацию</a> для получения дополнительной информации.
access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a href="%[1]s" target="_blank">API</a>. Читайте <a href="%[2]s" target="_blank">документацию</a> для получения дополнительной информации.
at_least_one_permission=Необходимо выбрать хотя бы одно разрешение для создания токена
permissions_list=Разрешения:
@ -1340,7 +1340,7 @@ editor.fail_to_apply_patch=Невозможно применить патч «%s
editor.new_patch=Новая правка
editor.commit_message_desc=Добавьте необязательное расширенное описание…
editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита.
editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="branch-name">%s</strong>.
editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Сохранить коммит в <strong>новую ветвь</strong> и начать запрос на слияние.
editor.create_new_branch_np=Создать <strong>новую ветвь</strong> для этого коммита.
editor.propose_file_change=Предложить изменение файла
@ -1705,7 +1705,7 @@ issues.error_modifying_due_date=Не удалось изменить срок в
issues.error_removing_due_date=Не удалось убрать срок выполнения.
issues.push_commit_1=добавлен %d коммит %s
issues.push_commits_n=добавлены %d коммита(ов) %s
issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> вместо <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> %[6]s`
issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> вместо <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> %[6]s`
issues.force_push_compare=Сравнить
issues.due_date_form=гггг-мм-дд
issues.due_date_form_add=Добавить срок выполнения
@ -1816,8 +1816,8 @@ pulls.nothing_to_compare=Нечего сравнивать, родительск
pulls.nothing_to_compare_and_allow_empty_pr=Ветви идентичны. Этот PR будет пустым.
pulls.has_pull_request=`Запрос на слияние этих ветвей уже существует: <a href="%[1]s">%[2]s#%[3]d</a>`
pulls.create=Создать запрос на слияние
pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one=слит %[1]d коммит из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
pulls.merged_title_desc_few=слито %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`изменил(а) целевую ветвь с <b>%s</b> на <b>%s</b> %s`