У меня есть отправленные теги пользователя, которые могут быть любым типом (допустимой) строки UTF-8. Я хочу знать, безопасно ли включать их в мерил URL путем прокручивания их urlencode()
.
Другими словами, urlencode () безопасен использовать для допустимых строк UTF-8? (допустимым я подразумеваю, что идентификатор уже закодировал силой их к UTF-8),
urlencode
не зависит от конкретной кодировки символов. Он просто просматривает байты, интерпретирует их как символы ASCII и заменяет любой байт, который либо не разрешен в ASCII (0x80–0xFF), либо не разрешен в простом виде в URL.
Теперь к вашему вопросу: да, при использовании urlencode
любая строка кодируется в любой кодировке символов для безопасного использования - но только в запросе URL! Поскольку urlencode
форматирует ввод в соответствии с application / x-www-form-urlencoded , который отличается от «нормального» процентного кодирования тем, как кодируется пространство: В application / x-www-form-urlencoded пробелы заменяются на +
, тогда как «нормальное» процентное кодирование заменяет их на % 20
.
Если вы хотите «нормальное» процентное кодирование, используйте вместо него rawurlencode
.
Да, urlencode()
должен сделать безопасную строку URL из любой входной строки. Пока этот URL соответствует (folder/file/htaccess)
, в нем нет фанки-символов. Всякий раз, когда вы дезинфицируете что-то от пользователя, где он может разместить что-то фанковое, я люблю эту функцию:
utf8_encode()
На всякий случай я бы сначала удалил символы новой строки. Сами по себе они не опасны, но могут быть ступеньками в использовании других уязвимостей.