Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 09.06.2011, 02:11
Кандидат Javascript-наук
Отправить личное сообщение для Invis1ble Посмотреть профиль Найти все сообщения от Invis1ble
 
Регистрация: 05.09.2010
Сообщений: 103

Спорность в том "что нужно меньше знать, и это проще". Спорно потому, что это основывается на субъективном опыте. Кому-то проще, кому-то - наоборот.
Ответить с цитированием
  #32 (permalink)  
Старый 10.06.2011, 11:29
Человек
Отправить личное сообщение для 0931454574 Посмотреть профиль Найти все сообщения от 0931454574
 
Регистрация: 10.03.2011
Сообщений: 305

x-yuri,
Invis1ble,
evgh,
Следил за Вашими прениями, но в действительности предложеного мной варианта должно быть достаточно) Кстати может есть рекомендации по хорошему ресурсу о безопасности?
__________________
XYZ
Ответить с цитированием
  #33 (permalink)  
Старый 10.06.2011, 12:45
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Invis1ble
Спорность в том "что нужно меньше знать, и это проще". Спорно потому, что это основывается на субъективном опыте. Кому-то проще, кому-то - наоборот.
Мой субъективный опыт подсказывает, что человек не может удерживать в голове слишком много информации. Поэтому ему свойственно прятать детали, обращаясь к ним по мере необходимости. Так появились функции, классы, объекты, предложения, абзацы, главы и модель OSI. А о каком субъективном опыте говоришь ты?

Сообщение от 0931454574
но в действительности предложеного мной варианта должно быть достаточно)
...пока значения находятся в пределах php-типа int
Ответить с цитированием
  #34 (permalink)  
Старый 10.06.2011, 23:08
Кандидат Javascript-наук
Отправить личное сообщение для Invis1ble Посмотреть профиль Найти все сообщения от Invis1ble
 
Регистрация: 05.09.2010
Сообщений: 103

x-yuri,
Я говорю о том, что когда я вижу некий метод мне нужно либо уже знать его, либо лезть в кишки и узнавать, либо штудировать мануалы. Вы ведь не используете вслепую чьи-то наработки? И так как фреймворков и библиотек великое множество - то такое упрятывание деталей мне не то что не помагает, а наоборот мешает. Вместо того чтобы знать одну единственную функцию mysql_real_escape_string() и быть счастливым.

ПС. Вот приходит мне щас письмо на почту по подписке на одном ресурсе: [PHP Classes] Added a new class: Basic SQL Injection Protection
И спрашивается, нафига мне их класс? По сути, ради одной функции?
Вы скажете, нет, там с помощью него можно еще корованы грабить! Предположим, это очень полезная для меня функция и я всегда мечтал это сделать, но чтобы убедиться в том, что этот класс действительно умеет грабить корованы, а не какую-то бяку - мне все равно надо лезть в кишки и изучать

Хорошо, что в письме сразу идет описание:
Цитата:
Detailed description:This class can cleanup harmful text from request parameters.

It can check a given parameter value of $_GET, $_POST or $_REQUEST super-global variables and remove certain types of text values that are usually used to perform SQL injection attacks.
Какое счастье!!! Вместо того, чтобы экранировать кавычки и т.п. он это все удаляет! =)
В топку такой класс....

ППС.
Сообщение от x-yuri
человек не может удерживать в голове слишком много информации.
И где в итоге приходится больше помнить? Помнить одну функцию mysql_real_escape_string() или помня код (или по крайней мере названия) 100500 методов из различных чудо-библиотек, чтобы уверенно ориентироваться в чужом коде?

Довольно сумбурно выразился, но надеюсь моя основная мысль ясна.

Последний раз редактировалось Invis1ble, 10.06.2011 в 23:49.
Ответить с цитированием
  #35 (permalink)  
Старый 11.06.2011, 00:19
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Invis1ble
mysql_real_escape_string()
дак её одной мало для защиты от инъекций ....
Ответить с цитированием
  #36 (permalink)  
Старый 11.06.2011, 00:30
Кандидат Javascript-наук
Отправить личное сообщение для Invis1ble Посмотреть профиль Найти все сообщения от Invis1ble
 
Регистрация: 05.09.2010
Сообщений: 103

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

Сообщение от Invis1ble
Я говорю о том, что когда я вижу некий метод мне нужно либо уже знать его, либо лезть в кишки и узнавать, либо штудировать мануалы. Вы ведь не используете вслепую чьи-то наработки?
...либо понять как он работает по названию, сигнатуре, по аналогии с другим методом/фреймворком, из примера

Сообщение от Invis1ble
И так как фреймворков и библиотек великое множество - то такое упрятывание деталей мне не то что не помагает, а наоборот мешает. Вместо того чтобы знать одну единственную функцию mysql_real_escape_string() и быть счастливым.
и так как фреймворков и библиотек великое множество, приходится выбирать. А так как хороших вариантов не так много, то и выбор не так сложен

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

потом, для простых задач можно обойтись без фреймворков. Но для достаточно сложных без них не обойтись. (ты же не будешь утверждать, что надо все писать на ассемблере?) И выхода два - либо воспользоваться существующим фреймворком, либо изобрести свой. Если ты в состоянии реализовать второй вариант - хорошо. Если не в состоянии, но ты это сделал - это хуже, чем первый вариант.

Сообщение от Invis1ble
И где в итоге приходится больше помнить? Помнить одну функцию mysql_real_escape_string() или помня код (или по крайней мере названия) 100500 методов из различных чудо-библиотек, чтобы уверенно ориентироваться в чужом коде?
помнить как использовать проще, чем помнить как написать с нуля. Но я не говорил "помнить". Я говорил "удерживать в голове". Это означает, что нельзя написать что-то достаточно сложное, не используя функции, методы, классы. Создавая функцию, ты прячешь ее реализацию за ее именем. Если нужно постоянно смотреть в реализацию, возможно, ты неудачно определился с обязанностями функции, ее именем или еще чем-нибудь. В общем, не удалась функция. Ты ведь используешь функции?

хотя я так понял, дело именно в чужом коде. Может тебе приходилось слишком много заниматься поддержкой кода, написанного на каком-нибудь неоправданно сложном для задачи фреймворке?

а в случае с экранированием разница действительно незначительна. Но ведь если расширение

Последний раз редактировалось x-yuri, 12.06.2011 в 17:32.
Ответить с цитированием
  #38 (permalink)  
Старый 13.06.2011, 19:05
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

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

Выборка всех полей из таблицы в json с применением PDO:

$r = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($r);


и теперь без:

$arr = array();
$s = mysql_query($sql);
while($r = mysql_fetch_assoc($s)){
   $arr[] = '{ "id": "'.$r['id'].'", "title": "'.$r['title'].'", "content":"'.$r['content'].'"}';
} //здесь опущено экранирование переносов строк в content и title
echo '['.implode(",",$arr).']';


или вот так:

function mysql2json($mysql_result,$name) {
$result = array($name => array());
while ($row = mysql_fetch_assoc($mysql_result))
$result[$name][] = $row;
return json_encode($result);
}


или вот так:

function mysql2json($mysql_result,$name){
     $json="{\n\"$name\": [\n";
     $field_names = array();
     $fields = mysql_num_fields($mysql_result);
     for($x=0;$x<$fields;$x++){
          $field_name = mysql_fetch_field($mysql_result, $x);
          if($field_name){
               $field_names[$x]=$field_name->name;
          }
     }
     $rows = mysql_num_rows($mysql_result);
     for($x=0;$x<$rows;$x++){
          $row = mysql_fetch_array($mysql_result);
          $json.="{\n";
          for($y=0;$y<count($field_names);$y++) {
               $json.="\"$field_names[$y]\" :	\"$row[$y]\"";
               if($y==count($field_names)-1){
                    $json.="\n";
               }
               else{
                    $json.=",\n";
               }
          }
          if($x==$rows-1){
               $json.="\n}\n";
          }
          else{
               $json.="\n},\n";
          }
     }
     $json.="]\n};";
     return($json);
}
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #39 (permalink)  
Старый 14.06.2011, 19:03
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

вообще-то это не честный пример. Должно быть как-то так:
$r = mysql_query($sql);
$rows = array();
while ($row = mysql_fetch_assoc($r))
    $rows[] = $row;
echo json_encode($rows);
Ответить с цитированием
  #40 (permalink)  
Старый 14.06.2011, 19:43
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от x-yuri Посмотреть сообщение
вообще-то это не честный пример. Должно быть как-то так:
$r = mysql_query($sql);
$rows = array();
while ($row = mysql_fetch_assoc($r))
    $rows[] = $row;
echo json_encode($rows);
согласен, но ведь и json_encode() не всегда было, ведь если не учить ничего нового, так и json_encode вроде не нужно.
а выровнять в одну строку? и я против опускания {}
echo json_encode($pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC));
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 14.06.2011 в 19:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка данных из MS SQL в список <select> Mike1983 Firefox/Mozilla 4 27.05.2011 19:01
JavaScript-ом прочитать данные из MS SQL - Возможно? negr78 Общие вопросы Javascript 1 23.12.2010 16:46
Sql запрос для статистики mycoding Серверные языки и технологии 7 14.12.2010 10:29
Установка JDBC Driver для SQL grim Общие вопросы Javascript 2 22.11.2010 08:20
Защита от вторжения в php vova_b Javascript под браузер 7 13.12.2009 22:38