Безопасно или непрактично использовать имена страниц UTF-8 или другой текст? - Пользователь отправил текст! - PullRequest
1 голос
/ 06 ноября 2010

Я работаю над сайтом, имеющим международную цель; Зарегистрированные пользователи могут добавлять текст на своем родном языке. Я надеюсь на названия и содержание международных страниц.

Пример URL, такой как японская Википедия: http://ja.wikipedia.org/wiki/メインページ (и имя страницы, и текст контента).

Я знаю, что с помощью UTF-8 я могу это сделать, но как мне это контролировать?

UTF-8 содержит способ управления многими языками / буквами в сценарии, я полагаю, насколько безопасно / небезопасно разрешать людям добавлять текст UTF-8?

Я вижу, что кто-то может так добавить вредоносный код, но как его предотвратить?

Вся информация относительно безопасности / контроля при использовании UTF-8 приветствуется!

РЕДАКТИРОВАТЬ: PS! Я использую PHP и MySQL.

Ответы [ 3 ]

2 голосов
/ 06 ноября 2010

Предупреждение: возможно, слегка ржавый ответ:

Примечание: не обсуждаются проблемы с именем хоста (IDNS).

Единственная полностью безопасная вещь здесь - использовать% -экранированный UTF-8. Некоторые браузеры отображают это как то, что вы хотите, а некоторые отображают% -escapes. (например, http://foo.bar/%ee%cc%cf.html)

Если вы добавите в URL «настоящий UTF-8», многие вещи будут работать, но в некоторых браузерах могут быть неприятные сюрпризы для некоторых людей. Я читаю ваш вопрос как имеющий дело со 100% статическим контентом. Если вы пытаетесь сделать это с помощью кода за сайтом, у вас есть дополнительные проблемы для работы.

«Неприятными сюрпризами» будут (а) люди, находящие% xx в URL нечитабельными, (б) браузер, который тает, (в) какое-то приложение для очистки или агрегирования данных.

Хотелось бы, чтобы я был в курсе этого, но я нет, поэтому я рекомендую развернуть тестовый сайт, а затем попытаться получить к нему доступ со всем, на что вы можете положиться, включая мобильные телефоны. Убедите Google проиндексировать его и посмотреть, что там происходит.

0 голосов
/ 06 ноября 2010

Это безопасно, если вы не интерпретируете его буквально как SQL (инъекция SQL) или HTML (XSS) или любой другой язык. Просто избегайте любого пользовательского ввода (URL запроса, заголовки запроса, параметры запроса, тело запроса и т. Д. И т. Д.) В той точке, в которой они будут использоваться в SQL или HTML.

Неясно, какой язык программирования на стороне сервера вы используете, поэтому я не могу вдаваться в подробности.

0 голосов
/ 06 ноября 2010

Для доменных имен это называется IDN .Для имен страниц вы можете подумать о возможности подделок IDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...