Добавить в корзинуПозвонить
Найти в Дзене
Я познаю Питон

Символы, которые ломают форумы, чаты, сообщения и комментарии

Несколько неожиданностей принес мне релиз моего веб-приложения MathTasks. О некоторых из них я уже написал в статье "Баги, лаги и говнокод - первые результаты работы моего сайта". Но это ещё не всё, выскакивают новые сюрпризы. Один из таких вынесен в заголовок статьи. На моём сайте пользователь с ником Beanskers печатал "волшебные" символы, которые ломали визуальную часть блока комментариев. Он, к слову, указал об этом в ошибках (за это ему отдельное спасибо!) Я комментарии удалил, но как решить проблему не придумал сразу. Сегодня, на второй день, я всё же закрыл эту брешь. Что же это за символы такие? Вместо того чтобы сто раз прочитать о них, лучше увидеть. Вот ссылка на ветку ответов Mail.ru, которая это продемонстрирует (ниже скриншот). Я сразу начал придумывать фикс для этой проблемы. Основной идеей была фильтрация текста сообщений с помощью Python: получаем сообщение - удаляем нежелательные символы - сохраняем в БД. Нагуглил про валидацию данных, но готовых решений не нашел. В ит

Несколько неожиданностей принес мне релиз моего веб-приложения MathTasks. О некоторых из них я уже написал в статье "Баги, лаги и говнокод - первые результаты работы моего сайта". Но это ещё не всё, выскакивают новые сюрпризы. Один из таких вынесен в заголовок статьи.

На моём сайте пользователь с ником Beanskers печатал "волшебные" символы, которые ломали визуальную часть блока комментариев. Он, к слову, указал об этом в ошибках (за это ему отдельное спасибо!) Я комментарии удалил, но как решить проблему не придумал сразу. Сегодня, на второй день, я всё же закрыл эту брешь.

Что же это за символы такие? Вместо того чтобы сто раз прочитать о них, лучше увидеть. Вот ссылка на ветку ответов Mail.ru, которая это продемонстрирует (ниже скриншот).

Символы, ломающие чат
Символы, ломающие чат

Я сразу начал придумывать фикс для этой проблемы. Основной идеей была фильтрация текста сообщений с помощью Python: получаем сообщение - удаляем нежелательные символы - сохраняем в БД. Нагуглил про валидацию данных, но готовых решений не нашел. В итоге, пришел к топорному решению на уровне академических задач. "Очистите строку от таких-то символов."

Мой топорный код
Мой топорный код

Что делает код: проходит по каждому символу в сообщении, проверяет является ли символ ASCII или буквой алфавита, и если не является, то заменяет его на пустое значение. Потом, если сообщение станет пустым, то пишет шуточное сообщение *я хацкер*.

И вроде этот код работает, но сколько там подводных камней и как это будет тормозить, если пользователей будет много и комментариев тоже - большой вопрос. К счастью, ко мне в голову пришло более красивое решение. Я проверил, как отображается страница ответов Mail.ru в разных браузерах, и оказалось, что в Microsoft Edge выглядит всё не так страшно. Отсюда сделал вывод, что решить проблему можно с помощью CSS.

Две строчки решат проблему с тем, что текст вылезает за границы блока:

overflow: hidden;
text-overflow: ellipsis

А интересно следующее: на многих серьезных ресурсах эти "волшебные" символы работают. А на моём, вроде, нет (вроде, потому что мало ли. Вы всегда можете проверить =D ).

З.Ы. Буду удалять здесь комментарии с волшебными символами. И вообще, не стоит хулиганить. =)