Как заблокировать специальные символы в URL с помощью PHP? - PullRequest
0 голосов
/ 13 сентября 2018

Есть ли код для блокировки специальных символов в URL? Если вы попытаетесь вставить специальный символ в URL-адрес сайта (пример: /;), он преобразуется в "%".

Это предотвращает инъекцию SLQ или какую-то инъекцию, верно?

Как я могу это сделать?

На данный момент мой сайт конвертирует только Апостроф (').

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Замена символов, которые недопустимы для URL, специальными кодами - это функция urlencode . Это не о безопасности. Но без этого URL может стать недействительным, поэтому вы не получите ответ.

Чтобы избежать уязвимости внедрения SQL, используйте подготовленный оператор (в зависимости от библиотеки / расширения, которое вы используете для подключения к БД, это может быть mysqli :: prepare , pdo :: prepare ) или что-то еще остальное. Проверьте примеры в статьях документов.

0 голосов
/ 13 сентября 2018

То, о чем вы говорите, известно как кодировка URL и не имеет ничего общего с SQL-инъекцией. Кодирование URL сделано для предотвращения путаницы со следующими символами, которые имеют особое значение:

!    *       '       (       )       ;       :       @       &       =       +       $        ,      /        ?       #      [       ]
%21  %23     %24     %26     %27     %28     %29     %2A     %2B     %2C     %2F     %3A     %3B     %3D     %3F     %40    %5B     %5D

Это делается автоматически браузером, и вам не нужно ничего настраивать на стороне сервера для ваших пользователей. Однако вы можете использовать urlencode(), если вам нужно передать закодированную строку, и urldecode(), если вам нужно чтобы найти, какой была строка.

Чтобы предотвратить внедрение SQL, самое важное - использовать подготовленные операторы. В процедурном MySQLi это будет выглядеть так:

$stmt = $conn->prepare('SELECT * FROM table WHERE field = ?');
$stmt->bind_param('s', $variable);
$stmt->execute();

Для дополнительных профилактических мер, я бы рекомендовал обратиться к этой записи .

0 голосов
/ 13 сентября 2018

Это называется URL-кодировка и не используется для предотвращения внедрения SQL или любого другого вида атаки.Вы можете сделать это в PHP с помощью функций URL , в частности urlencode.

Однако я бы не советовал делать это "вслепую", если вы не понимаетепоследствия или для чего.

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

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