PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
resik
Отправлено: 27 Июля, 2016 - 10:26:02
Новичок
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Подскажите, какие из символов лучше вырезать, а какие кодировать.
К примеру имеем статью с название:
Формируем урл статьи из ее названия функцией:
PHP:
скопировать код в буфер обмена
/**
* @param $str - название статьи
* @return кодированная часть для урл
*/
function str2url( $str )
{
// какие не желательные вырезать
// какие кодировать
}
(Отредактировано автором: 27 Июля, 2016 - 10:29:47)
resik
Отправлено: 27 Июля, 2016 - 20:22:13
Новичок
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Сравнил работу этих функций, и понял, что ни чего не понял
PHP:
скопировать код в буфер обмена
$str = 'Новая статья~!@#$&*%^()=-_:\/,:;|?{}+"\'`<>' ;
// %D0%9D%D0%BE%D0%B2%D0%B0%D1%8F+%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F%7E%21%40%23%24%26%2A%25%5E%28%29%3D-_%3A%5C%2F%2C%3A%3B%7C%3F%7B%7D%2B%22%27%60%3C%3E
// %D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F~%21%40%23%24%26%2A%25%5E%28%29%3D-_%3A%5C%2F%2C%3A%3B%7C%3F%7B%7D%2B%22%27%60%3C%3E
Как то не совсем понятно, почему rawurlencode не кодирует тильду.
Еще не устраивает замена пробела на + у urlencode.
Что лучше, менять пробел на %20 при urlencode, или же тильду на %7E при rawurlencode?
Или присмотреться к FILTER_SANITIZE_* ? Ох уж эти урлы (Отредактировано автором: 27 Июля, 2016 - 20:26:53)
resik
Отправлено: 28 Июля, 2016 - 02:45:16
Новичок
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Решил сделать так:
PHP:
скопировать код в буфер обмена
function str2url( $str )
{
$pattern = preg_quote ( '#$%^&*!@()_&+=`-[]\';,./{}|\":<>?~' , '#' ) ;
}
$name = "-Новая - статья~!@#$&*%^()=-_:\/,:;|{}+\" \'`?var=val-" ;
$url = str2url( $name ) ;
echo '<a href="/article/' . $url . '/">' . $name . '</a>' ;
// html: <a href="/article/%d0%9d%d0%be%d0%b2%d0%b0%d1%8f-%d1%81%d1%82%d0%b0%d1%82%d1%8c%d1%8f-var-val/">-Новая - статья~!@#$&*%^()=-_:\/,:;|{}+"\'`?var=val-</a>
// при наведении и в адресной строке: site.ru/article/Новая-статья-var-val/
Может и не правильный подход, но вроде как желаемое достигнуто (Отредактировано автором: 28 Июля, 2016 - 07:30:20)
Fart
Отправлено: 31 Июля, 2016 - 10:41:03
Посетитель
Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016
Помог: 10 раз(а)
если ты такой код будешь добавлять себе на сайт, то юзер с XSS будет очень рад тебя удивить!!!
вот результат твоей выборки
PHP:
скопировать код в буфер обмена
function str2url( $str )
{
$pattern = preg_quote ( '#$%^&*!@()_&+=`-[]\';,./{}|\":<>?~' , '#' ) ;
}
$name = "<script>alert('Ты взломан');</script>" ;
$url = str2url( $name ) ;
echo '<a href="/article/' . $url . '/">' . $name . '</a>' ;
(Отредактировано автором: 31 Июля, 2016 - 10:43:32)
resik
Отправлено: 01 Августа, 2016 - 20:36:50
Новичок
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Fart пишет: если ты такой код будешь добавлять себе на сайт, то юзер с XSS будет очень рад тебя удивить!!!
вот результат твоей выборки
PHP:
скопировать код в буфер обмена
function str2url( $str )
{
$pattern = preg_quote ( '#$%^&*!@()_&+=`-[]\';,./{}|\":<>?~' , '#' ) ;
}
$name = "<script>alert('Ты взломан');</script>" ;
$url = str2url( $name ) ;
echo '<a href="/article/' . $url . '/">' . $name . '</a>' ;
А причем тут юзер? Данная функция доступна только админу при добавлении статьи.
Вы сами то будете писать XSS в заголовки своих статей?
Ну а если замучает паранойя, отфильтрую примерно так:
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB