Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 14.02.2011, 19:39
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от e1f
давайте будем сами делать то, что уже реализовано в db-интерфейсах. мы же умные, черт побери
неправильное какое-то определение. В db-интерфейсах реализовано и экринирование, и binding. Скорее "давайте ограничим пользователя в том, куда и что можно вставлять, в надежде, что он на этом и остановится"

Сообщение от dmitriymar
но этот вариант по ресам займёт больше чем изначальная замена их спец символами.
это еще надо доказать

Сообщение от dmitriymar
любое искажение данных-кавычка не в том месте где была изначально или изменение их колва -приравнивается к потере данных...
mysql_real_escape_string ничего не искажает

Сообщение от dmitriymar
по моему у него в видеокурсе я встречал пример где одно экранирование не спасало
jolly-wind.ru
у кого? Да и мало ли почему jolly-wind.ru могло не спасать одно экранирование
Ответить с цитированием
  #22 (permalink)  
Старый 14.02.2011, 19:56
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от x-yuri Посмотреть сообщение
неправильное какое-то определение. В db-интерфейсах реализовано и экринирование, и binding. Скорее "давайте ограничим пользователя в том, куда и что можно вставлять, в надежде, что он на этом и остановится"
Экранирование реализовано средствами самого php, так? Мы экранируем данные, запихиваем их в запрос, отдаем библиотеке для работы с БД. В то время как
prepared statements - фича базы данных.
Ответить с цитированием
  #23 (permalink)  
Старый 14.02.2011, 19:57
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сообщение от x-yuri
любое искажение данных-кавычка не в том месте где была изначально или изменение их колва -приравнивается к потере данных...
mysql_real_escape_string ничего не искажает
в этиом варианте может исказить-поскольку применяются все символы и экранирование невозможно будет отличить от реально введённых пользователем данных
Сообщение от x-yuri
у кого? Да и мало ли почему jolly-wind.ru могло не спасать одно экранирование
ну вот пришли к тому что экранирование одно может не помочь ограничить инъекции. а ограничить тип данных я не могу- в силу специфики данных
Ответить с цитированием
  #24 (permalink)  
Старый 14.02.2011, 20:56
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от e1f
Экранирование реализовано средствами самого php, так?
ты ошибаешься. Ты, наверное, имел в виду get_magic_quotes_gpc() и addslashes/stripslashes

Сообщение от dmitriymar
в этиом варианте может исказить-поскольку применяются все символы и экранирование невозможно будет отличить от реально введённых пользователем данных
и тем не менее ему как-то удается
<?
mysql_connect('localhost', <login>, <passwd>) or die(mysql_error());
mysql_query('SET NAMES cp1251') or die(mysql_error());
mysql_select_db(<db>) or die(mysql_error());
mysql_query('DROP TABLE IF EXISTS t1') or die(mysql_error());
mysql_query('CREATE TABLE t1 (f1 TEXT CHARACTER SET cp1251)') or die(mysql_error());
$s = '';
for( $i=0; $i<256; $i++ )
    $s .= chr($i);
$_s = mysql_real_escape_string($s);
mysql_query("INSERT INTO t1 VALUES ('$_s')") or die(mysql_error());
$r = mysql_query('SELECT * FROM t1') or die(mysql_error());
$r = mysql_result($r, 0, 0);
if( $s != $r )
    die('mysql_real_escape_string sucks!!!');

Последний раз редактировалось x-yuri, 14.02.2011 в 21:04.
Ответить с цитированием
  #25 (permalink)  
Старый 14.02.2011, 21:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

и по поводу этого:

Сообщение от dmitriymar
ну вот пришли к тому что экранирование одно может не помочь ограничить инъекции. а ограничить тип данных я не могу- в силу специфики данных
я не умею решать несуществующие проблемы. Если у них что-то не получилось, надо разобраться, что именно и почему. А не сразу делать вывод, что экранирование не работает
Ответить с цитированием
  #26 (permalink)  
Старый 14.02.2011, 22:05
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

приведённый пример-это общий случай. в частном не пройдёт-вероятность возникновения частного минимальна конечно но всёже.
и всё равно эта полемика интересна-но меня интересует всего один вопрос(точнее группа вопросов)-заданный в начале этого топика
1 возможно ли слепить строку из строк с разными кодировками?-на клиенте
2 возможно ли сменить тип кодировки во время прередачи данных,или всёт аки передастся в той кодировке что указанна в странице?(одно упоминание я нашел что при гет и посте данные передаются в юникоде)-на клиенте
3. если всётаки можно изменить кодировку-можно ли скрипту рнр дать инструкции в этой строке указывающие на тип кодировки?
P.S никто не говорил что оно не работает-было сказано что оно не помагает в некоторых случаях инъекций.и то что в некоторых ситуациях оно может изменить исходную строку-что не желательно

Последний раз редактировалось dmitriymar, 14.02.2011 в 22:22.
Ответить с цитированием
  #27 (permalink)  
Старый 14.02.2011, 22:35
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от dmitriymar
было сказано что оно не помагает в некоторых случаях инъекций
в каких?

Сообщение от dmitriymar
и то что в некоторых ситуациях оно может изменить исходную строку
в каких?

Сообщение от dmitriymar
но меня интересует всего один вопрос(точнее группа вопросов)
повторюсь, я не умею решать проблему, не видя в чем она состоит. Но ты можешь подождать, пока кто-то другой ответит на твои вопросы
Ответить с цитированием
  #28 (permalink)  
Старый 14.02.2011, 22:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

x-yuri,
дак я проблему не создавал и обход этой проблемы я знаю, но-меня интересовали ответы на эти вопросы и всё.-чтобы определиться по какому варианту реализовывать -по классическому с экранированием,проверкой на некоторые символы,вылавливанием "частного случая",приведением типа- либо с этим-где мне нужно только сделать замену.
а тему развили участники этой темы)
но насколько я понимаю -эти вопросы настолько специфические ,что навряд ли гдето массово обсуждались или поднимались.

Последний раз редактировалось dmitriymar, 14.02.2011 в 22:53.
Ответить с цитированием
  #29 (permalink)  
Старый 15.02.2011, 12:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от x-yuri Посмотреть сообщение
ты ошибаешься. Ты, наверное, имел в виду get_magic_quotes_gpc() и addslashes/stripslashes
Да, это и имел в виду. Просто мне метод prepare-bind-execute кажется более правильным, нежели do.
Ответить с цитированием
  #30 (permalink)  
Старый 15.02.2011, 20:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от e1f
Да, это и имел в виду. Просто мне метод prepare-bind-execute кажется более правильным, нежели do.
правильность - это не аргумент
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по учебнику Invis1ble Сайт Javascript.ru 12 21.03.2011 19:06
Вопрос по работе функций в PHP bayah Серверные языки и технологии 2 12.02.2011 16:42
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 22:49
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 13:50
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 19:47