Это зависит от кода, конечно. Вы никогда не можете сказать «это абсолютно безопасно» без анализа всей базы кода. Ограниченная кодировка URL-адресов кажется разумной (если этого достаточно для вашего приложения). Однако я могу представить, по крайней мере, один пример, где вход может быть вредоносным, если пользователь помещает \..\..\
в URL-адрес, что в некоторых случаях может открыть пользовательский файл (в Windows).
Если вы беспокоитесь только о инъекции SQL, если у вас есть такой код:
SELECT * FROM articles WHERE article_id = $id
злонамеренный пользователь может установить $ идентификатор 0 or 1 like 1
, который проходит ваш ограниченный набор символов.
То же самое можно сделать для XSS, если вы где-нибудь забываете сбежать должным образом (часто возникает в сгенерированном JavaScript-коде), но пример сложнее думать.
В любом случае, нет истинного/идеального/безопасного способа ограничения ввода пользователем для обеспечения безопасности. Единственный способ избежать XSS/SQL/любой инъекции - пройти весь ваш код и убедиться, что везде, где вы либо используете для ввода, или вывод некоторой переменной, она правильно экранируется в соответствии с используемым контекстом. Правило не ограничивает ввод, но будьте готовы, что может содержать что-либо.
Если ввод является строкой, будьте готовы, он может содержать любые символы и иметь дело с ним. Сохраните его в базе данных , так как это, и убедитесь, что во время сохранения он не может навредить. Если вам нужно избежать этого при построении SQL-запроса, убегите туда. Если вам нужно поместить строку (или ее часть) в вывод HTML, убегите в этом. Конечно, вы должны быть очень осторожны, чтобы убедиться, что вы все равно избегаете всех мест.
неадекватный в каком случае? – AlphaMale
Я улучшил свой вопрос AlphaMale - см. Scanario - может ли это каким-то образом быть какой-то вредоносный код? – Laurence
Точки слэшей и тильд-символы полезны при обходах каталогов и локальных атаках включения файлов. Колонии полезны при создании атак, которые приводят к перенаправлению пользователя на произвольные веб-сайты или удаленные атаки на включение файлов. проценты символов полезны при инъекции в sql where clauses. Есть еще много примеров. Любые данные от пользователя могут быть злокачественными, будь то в URL-адресах, файлах cookie, POST-данных, HTTP-заголовках или в другом месте. – Cheekysoft