PHP: является urlencode () безопасным способом позволить допустимые строки UTF-8 в URL?

У меня есть отправленные теги пользователя, которые могут быть любым типом (допустимой) строки UTF-8. Я хочу знать, безопасно ли включать их в мерил URL путем прокручивания их urlencode().

Другими словами, urlencode () безопасен использовать для допустимых строк UTF-8? (допустимым я подразумеваю, что идентификатор уже закодировал силой их к UTF-8),

12
задан Xeoncross 7 January 2010 в 23:59
поделиться

3 ответа

urlencode не зависит от конкретной кодировки символов. Он просто просматривает байты, интерпретирует их как символы ASCII и заменяет любой байт, который либо не разрешен в ASCII (0x80–0xFF), либо не разрешен в простом виде в URL.

Теперь к вашему вопросу: да, при использовании urlencode любая строка кодируется в любой кодировке символов для безопасного использования - но только в запросе URL! Поскольку urlencode форматирует ввод в соответствии с application / x-www-form-urlencoded , который отличается от «нормального» процентного кодирования тем, как кодируется пространство: В application / x-www-form-urlencoded пробелы заменяются на + , тогда как «нормальное» процентное кодирование заменяет их на % 20 .

Если вы хотите «нормальное» процентное кодирование, используйте вместо него rawurlencode .

18
ответ дан 2 December 2019 в 19:31
поделиться

Да, urlencode() должен сделать безопасную строку URL из любой входной строки. Пока этот URL соответствует (folder/file/htaccess), в нем нет фанки-символов. Всякий раз, когда вы дезинфицируете что-то от пользователя, где он может разместить что-то фанковое, я люблю эту функцию:

utf8_encode()

0
ответ дан 2 December 2019 в 19:31
поделиться

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

0
ответ дан 2 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: