• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Хранение кавычек в БД

  • Автор темы typak
  • Дата начала
T

typak

Вообщем тут проблема с кавычками нипонятно как их правильно обрабатывать.
Стоит у меня в текстовой области такая проверка:
PHP:
if(!get_magic_quotes_gpc())
{
$output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
}
else $output = $this->value;
вообщем $this->value - это значение которое подставляется потом между <textarea>$this->value</textarea>
Это проверка при извечении и БД и подстановки в форму для редактирования

А при добавлении в БД идет такая проверка
PHP:
//Обеспечение безопасности текста перед внесением в БД
if(!get_magic_quotec_gpc())
{
$this->value = mysql_escape_string($this->value);
}
так от непонятно в каком виде у меня попадают кавычки в БД ?
\' \" Экранированные штоли ?
А вообще в каком виде их правильно хранить, а то они у меня и выводятся в таком виде на экран \"
хирня полная
А может их надо в html-сущностях хранить ? или всетаки в базе данных нужно их сохранять в реальном виде в таком в каком они и есть тока при выводе на экран и.т.д. уже изменять. Всётаки как правильно делать
Головняк полный
 
V

vital

А нефиг по попову учиться же.
1. mysql_escape_string. Устаревшая функция, вместо нее юзайте mysql_real_escape_string()
2
PHP:
if(!get_magic_quotes_gpc())
{
$output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
}
Cтереть нафиг. :)
3. см пункт 1 и все вопрсоы отпадут.
4. Последнее, перед выводом на экран так еще echo htmlspecialchars($this->value);

Статья из которой вы взяли пример - годов 2х тысячных что ли?
PHP:
if(!get_magic_quotec_gpc())
{
Используйте пхп 5.2\5.3 и Забудьте про это. ПРосто забудьте.
 
T

typak

Статья из которой вы взяли пример - годов 2х тысячных что ли?
Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
если вставляеш значения в форму одну проверку

if(!get_magic_quotes_gpc())
{
$output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
}
else $output = $this->value;


тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

if(!get_magic_quotec_gpc())
{
$this->value = mysql_escape_string($this->value);
}


Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

1. mysql_escape_string. Устаревшая функция, вместо нее юзайте mysql_real_escape_string()
Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

Я тут покапашился в коде так от шо я думаю:
1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

Вообщем такая у меня проверка стоит:
PHP:
if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то 
{
$output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
}
else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

$output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без

Терь всё как надо работае можна записывать:
и так ' ' ' ' ' '
и так " " " " "
и даже так \' \' \" \"
тока структуры никакой нету шо попало наделано я в ужасе :)
 
T

typak

Статья из которой вы взяли пример - годов 2х тысячных что ли?
Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
если вставляеш значения в форму одну проверку

if(!get_magic_quotes_gpc())
{
$output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
}
else $output = $this->value;


тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

if(!get_magic_quotec_gpc())
{
$this->value = mysql_escape_string($this->value);
}


Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

1. mysql_escape_string. Устаревшая функция, вместо нее юзайте mysql_real_escape_string()
Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

Я тут покапашился в коде так от шо я думаю:
1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

Вообщем такая у меня проверка стоит:
PHP:
if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то 
{
$output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
}
else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

$output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без

Терь всё как надо работае можна записывать:
и так ' ' ' ' ' '
и так " " " " "
и даже так \' \' \" \"
тока структуры никакой нету шо попало наделано я в ужасе :facepalm:



Добавлено:
Статья из которой вы взяли пример - годов 2х тысячных что ли?
Та нет это softtimeFramwork class.textarea тупо создаеш обьект инициализируеш члены класса, а он сам уже делает проверку
если вставляеш значения в форму одну проверку

if(!get_magic_quotes_gpc())
{
$output = str_replace('\r\n', "\r\n", $this->value)//шо утета строка делает фиг его знает зачем теже симвоы заменять темиже ?
}
else $output = $this->value;


тока фиг его знает шо эта страка делает $output = str_replace('\r\n', "\r\n", $this->value) чотаж она там записана была навернож не просто так как никак Кузнецов и Семдянов професионалы.

Да вообщем, а када уже эти данные отправляеш (после редактирования или када новые вводиш, то делает такую проверку

if(!get_magic_quotec_gpc())
{
$this->value = mysql_escape_string($this->value);
}


Здесь понятно без экранирования в БД кавычки непопадут . Уже такую строку не передаш """ лвыао" алдвыфо" Будет ошибка не наверно такую с одинарными кавычками ' dsf'fdsa'' '

1. mysql_escape_string. Устаревшая функция, вместо нее юзайте mysql_real_escape_string()
Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string

Я тут покапашился в коде так от шо я думаю:
1. Даные в БД Хранятся в таком виде в котором мы их и записываем. Мы просто извлекаем их по разному ничо их не нужно переделывать ни в какие там html-сущности. Так как есть так и сохраняем.
2.Обязательно экранировать. Ну это ни как правило, а как необходимость потомучто кусок кода или текста с кавычками уже не закинеш в бд.
3.Это делать такую проверку: кароче обрабатывать функцией stripslashes если включон режим магических кавычек. Да и не тока чота у меня такая фигня Допустим строка запроса с режимом кавычек " \' kdsfjl \' \' \" ". Вопрос шо запишется в БД? Кто знает
у меня походу чота так и записывается \' kdsfjl \' \' \" отакая фигня вроде как хотя далжно б записать БД ж понимает такой символ \' как ' , а такой как \" отакай и дожно по правильному такое записать ' kdsfjl ' ' " , а у меня нето вроде выходи со слешами пишит или я туплю ? Кароче приходится применять stripslaches обязательно неважно включон magic_quotes или нет. Херня какаето шо попало. Или всё так и должно быть ? шото я сомневаюсь

Вообщем такая у меня проверка стоит:
PHP:
if(!get_magic_quotes_gpc())//если не включон режим магических кавычек, то 
{
$output = $this->value; //str_replace('\r\n',"\r\n",$this->value);//заменяем переводы строк на переводы строк
}
else $output = $this->value;//а если включен режим магических кавычек, то формируем тег

$output = stripslashes($output);//убираем слеши при извлечении из БД влюбом случае хоть при кавычках хоть без

Терь всё как надо работае можна записывать:
и так ' ' ' ' ' '
и так " " " " "
и даже так \' \' \" \"
тока структуры никакой нету шо попало наделано я в ужасе :facepalm:



Добавлено: Чота у меня браузер подвис 4 сообщения отправил ))) :)

Добавлено: даже сообщение нормально отправить невышло ))) :rolleyes:

невезет так невезет чорная полоса наверно
 
V

vital

Еще раз про года.
Забудьте про кавычки. Забудьте, эту древность пережили давно. Скоро ее выпилят вообще.

$output = str_replace('\r\n', "\r\n", $this->value) Заменит в строке '\r\n' на символы переноса строки и перевода каретки. Не вижу никакой практической ценности. Вряд ли кто-либо вместо ентера пишет \r\n в надежде на то, что скрипт потом вставит перенос.
Да, кстати. Софттайм знаменит своим былокодом.
А про фреймворки- учите нормальный, в духе Yiiframework.ru
А это говно просто забудьте.

Добавлено:
Так онаж сильно не отличается. Тоже самое делает что и mysql_escape_string
Разницу можете загуглить. Не спорте со мной. Просто примите как аксиому.
 
T

typak

Еще раз про года
за 2009 год книга
А про фреймворки- учите нормальный, в духе Yiiframework.ru
А это говно просто забудьте.

Да я soffttimeframwork знаю от и до там то и учить нечего было 30 классов гдето буквально за две недели осилил,
а на изучение другого уйдет минимум месяца 2. Мне просто softtime нравится из за своей простоты + его можно самому расширить: дабавить свои классы, зделать из существующих под себя дополнительные классы, ну вообщем очень легкий и можно хорошо над ним поизвращатся.

А изучать какой то другой канечно буду тока нещас щас некада sape покоя недает. Там вроде CodeInteger хороший фреймворк говорят фиг его знает. Да и подводные камни: начну его изучать, а там литературы нормальной на русском может и небыть, код может быть как попало закоментированный или даже вообще незакоментированный. Ну вообщем можно сильно много времени потерять, да и нервы попортить.

Да я вообще пака перед собой задачи небольшие ставлю думаю короче доску обьявлений написать типа газеты рекламной в каждом городе. Такой небольшой сервис. Так уже прикинул для этого больше чем достаточно и softtima темболее я с ним уже знакомм.

softtimeFramework - лутше чем писать структурный код !!!!!

Разницу можете загуглить. Не спорте со мной. Просто примите как аксиому.
Да загуглил поменял кароче на real да устарела, А где смотреть устарела функция или нет
 
V

vital

Еще раз говорит про уровень книги, если в сравнительно новой книге, учат хрени из древности.
уйдет минимум месяца 2
Я на Yii начал писать за неделю. Он очень простой и понятный.
Мне просто softtime нравится из за своей простоты + его можно самому расширить: дабавить свои классы, зделать из существующих под себя дополнительные классы, ну вообщем очень легкий и можно хорошо над ним поизвращатся.
Это могут все фреймворки. Yii особенно легко.
там литературы нормальной на русском может и небыть
Есть. я же дал сайт.
код может быть как попало закоментированный
Он отлично закоменнтировано.
softtimeFramework - лутше чем писать структурный код !!!!!
Что такое структурный код? Это типа процедурный? ТАк для того, что бы писать в ооп стиле, фреймворк не обязателен.
Там вроде CodeInteger хороший фреймворк
Хороший. Но Yii лучше.имхо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!