Хобрук: Ваш путь к мастерству в программировании

как проверить и дезинфицировать ввод произвольной строки, которая будет использоваться как часть URL-адреса

У меня есть приложение, которое позволяет пользователям создавать заметки с заголовками. Он использует эти заголовки как часть URL-адреса самой заметки, чтобы сделать URL-адреса более удобочитаемыми.

Я пытаюсь разработать наилучший способ как для дезинфекции ввода, так и для обратной связи с пользователем о том, что он мог ввести, что является незаконным.

Пока я думаю, что буду использовать захват и сохранение ввода. Обрежьте его и передайте в encodeURIComponent. Я бы передал вывод этого в decodeURIComponent. Результат decodeURIComponent будет отличаться от исходного ввода, если это не то же самое, что и ошибка. Пользователь будет предупрежден о том, что нельзя использовать символы, не соответствующие diff.

Что-то явно не так с этим подходом? Есть ли способ лучше?


  • Звучит правильно :) 09.09.2016

Ответы:


1

Этот подход достаточно хорош, но отображение «проблемных областей» пользователю путем отображения символов, не соответствующих различиям, определенно подталкивает их к планированию более направленной, целенаправленной атаки. Не указывайте четко, что запрещено; пользователи узнают о новых методах обхода и понимания вашего текущего черного списка и смогут спланировать более целенаправленную атаку.

26.11.2016
Новые материалы

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..