PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (4): [1] 2 3 4 »
Найдено сообщений: 51
resik
Отправлено: 01 Августа, 2016 - 20:36:50 • Тема: Спец. символы в урл • Форум: Вопросы новичков
Ответов: 11 Просмотров: 459
Fart пишет: если ты такой код будешь добавлять себе на сайт, то юзер с XSS будет очень рад тебя удивить!!!
вот результат твоей выборки
PHP:
скопировать код в буфер обмена
function str2url( $str )
{
$pattern = preg_quote ( '#$%^&*!@()_&+=`-[]\';,./{}|\":<>?~' , '#' ) ;
}
$name = "<script>alert('Ты взломан');</script>" ;
$url = str2url( $name ) ;
echo '<a href="/article/' . $url . '/">' . $name . '</a>' ;
А причем тут юзер? Данная функция доступна только админу при добавлении статьи.
Вы сами то будете писать XSS в заголовки своих статей?
Ну а если замучает паранойя, отфильтрую примерно так:
resik
Отправлено: 28 Июля, 2016 - 02:45:16 • Тема: Спец. символы в урл • Форум: Вопросы новичков
Ответов: 11 Просмотров: 459
Решил сделать так:
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/
Может и не правильный подход, но вроде как желаемое достигнуто
resik
Отправлено: 27 Июля, 2016 - 21:46:11 • Тема: Спец. символы в урл • Форум: Вопросы новичков
Ответов: 11 Просмотров: 459
Что значит не лезть? Я же не какой то левый двиг переписываю. По этому хочется разобраться что преобразовывать, что вырезать и чем.
resik
Отправлено: 27 Июля, 2016 - 20:22:13 • Тема: Спец. символы в урл • Форум: Вопросы новичков
Ответов: 11 Просмотров: 459
Сравнил работу этих функций, и понял, что ни чего не понял
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_* ? Ох уж эти урлы
resik
Отправлено: 27 Июля, 2016 - 10:26:02 • Тема: Спец. символы в урл • Форум: Вопросы новичков
Ответов: 11 Просмотров: 459
Подскажите, какие из символов лучше вырезать, а какие кодировать.
К примеру имеем статью с название:
Формируем урл статьи из ее названия функцией:
PHP:
скопировать код в буфер обмена
/**
* @param $str - название статьи
* @return кодированная часть для урл
*/
function str2url( $str )
{
// какие не желательные вырезать
// какие кодировать
}
resik
Отправлено: 25 Мая, 2016 - 22:46:02 • Тема: rawurlencode - как им пользоватся? • Форум: Вопросы новичков
Ответов: 4 Просмотров: 206
Мелкий пишет: Поисковики нормально жрут даже URI, грубо нарушающие стандарты.
resik пишет: Сбивает с толку то, что mediawiki например по каким то не понятным причинам в своих урлах меняет пробелы на _ за место %20 ( стало быть не просто так ).
Для читаемости урла человеком. _ и выглядит как _, нет необходимости воспринимать отличие %20 от %26 того же.
Название статьи и её url хранятся (и порой редактируются) раздельно как раз поэтому.
Какой в этом смысл если в современных браузерах в адресной строке и при наведении на подобные ссылки как бы уже происходит rawurldecode.
Конечно если это не недобраузер IE8
resik
Отправлено: 25 Мая, 2016 - 20:32:24 • Тема: rawurlencode - как им пользоватся? • Форум: Вопросы новичков
Ответов: 4 Просмотров: 206
Это не столько решение задачи, сколько попытки избежать возможные проблемы связанные с такими урл.
Перефразирую свой вопрос: одинаково ли будут относится поисковики к данным символам в урл, будь то они как есть или замененные на шестнадцатеричную пару?
Сбивает с толку то, что mediawiki например по каким то не понятным причинам в своих урлах меняет пробелы на _ за место %20 ( стало быть не просто так ).
resik
Отправлено: 25 Мая, 2016 - 14:39:37 • Тема: rawurlencode - как им пользоватся? • Форум: Вопросы новичков
Ответов: 4 Просмотров: 206
Здравствуйте.
Есть ли смысл заменять не зарезервированные символы ( "-" / "." / "_" / "~" ) после функции rawurlencode для определенных частей урла. Интересует мнение тех, кто сталкивался с данным вопросом.
PHP:
скопировать код в буфер обмена
<?PHP
$name = 'новая-._~статья' ;
// RFC 3986 - 2.3. ( replace unreserved characters )
echo '<a href="/article/' . $url . '/">' . $name . '</a>' ;
?>
resik
Отправлено: 27 Апреля, 2016 - 18:49:36 • Тема: Почему кодировка в html письме неверная • Форум: Вопросы новичков
Ответов: 3 Просмотров: 282
Вот функция, попробуйте:
PHP:
скопировать код в буфер обмена
function sendMail( $to , $subject , $message , $mail_from = false ) {
$mail_from = ( ! $mail_from ) ?
"noreply@" . str_replace ( "www." , "" , $_SERVER [ 'SERVER_NAME' ] ) : $mail_from ;
$headers = 'From: ' . $mail_from . "\n " ;
$headers .= 'Reply-to: ' . $mail_from . "\n " ;
$headers .= 'Return-Path: ' . $mail_from . "\n " ;
$headers .= 'Message-ID: <' . $uniqid . '@' . $_SERVER [ 'SERVER_NAME' ] . ">\n " ;
$headers .= 'MIME-Version: 1.0' . "\n " ;
$headers .= 'Date: ' . gmdate ( 'D, d M Y H:i:s' , time ( ) ) . "\n " ; $headers .= 'X-Priority: 3' . "\n " ;
$headers .= 'X-MSMail-Priority: Normal' . "\n " ;
$headers .= 'X-Mailer: MyCMS : 1.0' . "\n " ;
$headers .= 'X-MimeOLE: MyCMS : 1.0' . "\n " ;
$headers .= 'Content-Type: multipart/mixed;boundary="----------' . $uniqid . '"' . "\n \n " ;
$headers .= '------------' . $uniqid . "\n " ;
$headers .= 'Content-Type: text/html;charset=utf-8' . "\n " ;
$headers .= 'Content-Transfer-Encoding: 8bit' ;
return @ mail ( $to , $subject , $message , $headers ) ; }
resik
Отправлено: 27 Апреля, 2016 - 10:14:04 • Тема: Обертка PDO • Форум: Вопросы новичков
Ответов: 6 Просмотров: 431
Ch_chov пишет: От задачи зависит. Для чего вам вообще обёртка?
Для добавления своих методов класса к дополнению уже существующих от PDO, обработка исключений, логирование ошибок, сбор запросов и все такое.
resik
Отправлено: 27 Апреля, 2016 - 08:59:58 • Тема: Обертка PDO • Форум: Вопросы новичков
Ответов: 6 Просмотров: 431
Ch_chov пишет: Первая обёртка реализованна через наследование, вторая через фабрику. В текущем виде обе реализации не имеют никакого смысла.
Какой стиль использовать лучше и почему, подскажите, если не сложно.
resik
Отправлено: 26 Апреля, 2016 - 23:17:56 • Тема: Обертка PDO • Форум: Вопросы новичков
Ответов: 6 Просмотров: 431
Здравствуйте.
Может кто пояснить смысл двух разных реализация обертки для PDO.
В примерах опущены блоки try catch и прочее.
Пример 1:
CODE (
htmlphp ):
скопировать код в буфер обмена
class DB extends PDO
{
public function __construct( )
{
parent:: __construct( $dsn ) ;
}
public function query( $sql )
{
return parent:: query ( $sql ) ;
}
}
$db = new DB( ) ;
$db -> query ( /*SQL*/ ) ;
Пример 2:
CODE (
htmlphp ):
скопировать код в буфер обмена
class DB
{
private $_instance ;
public function __construct( )
{
$this -> _instance = new PDO( $dsn ) ;
}
public function query( $sql )
{
return $this -> _instance-> query ( $sql ) ;
}
}
$db = new DB( ) ;
$db -> query ( /*SQL*/ ) ;
resik
Отправлено: 16 Марта, 2016 - 00:08:34 • Тема: Кража сессии или паранойя? • Форум: Вопросы новичков
Ответов: 20 Просмотров: 964
Хотелось бы вернутся к вопросы.
PHP:
скопировать код в буфер обмена
class Member
{
public static function signedIn( )
{
if ( isset ( $_SESSION [ 'member' ] ) ) { if ( $_SESSION [ 'member' ] [ 'ip' ] == getIP( ) ) {
return $_SESSION [ 'member' ] ;
}
self :: signOut ( ) ;
}
return false ;
}
public static function signIn( $login , $password )
{
global $db , $config ;
$hash = self :: encode ( $password ) ;
$sql = "SELECT * FROM `{$config['sql_dbname']} `.`members` WHERE login=? AND hash=?" ;
$bindValues = array ( 1
=> $login , 2
=> $hash ) ;
if ( $user = $db -> result ( $sql , $bindValues ) ) {
$_SESSION [ 'member' ] = array ( ) ; foreach ( $user as $key => $value ) {
$_SESSION [ 'member' ] [ $key ] = $value ;
}
$_SESSION [ 'member' ] [ 'ip' ] = getIP( ) ;
return true ;
}
return false ;
}
public static function signOut( )
{
unset ( $_SESSION [ 'member' ] ) ; }
private static function encode( $str )
{
}
}
if ( $member = Member:: signedIn ( ) ) {
// вошли
} else {
// предлогаем войти
}
Надежен ли такой вариант? Или все таки лучше дополнительно добавить проверку с клиент стороны ( куки ) ?
resik
Отправлено: 09 Марта, 2016 - 23:06:07 • Тема: Кража сессии или паранойя? • Форум: Вопросы новичков
Ответов: 20 Просмотров: 964
Теперь в конец запутался
При удачной авторизации пишу все значения полей пользователя в определенный массив сессии.
PHP:
скопировать код в буфер обмена
(
[ id] => айди
[ login] => логин
[ name] => нэйм
[ email] => мыло
[ create_time] => дата реги
[ last_entry_time] => дата последнего входа
[ group_id] => айди группа
)
Проверяю авторизацию на существование определенного массива сессии.
Вариант не безопасен?
Страниц (4): [1] 2 3 4 »
Powered by ExBB FM 1.0 RC1. InvisionExBB