PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 26
neolinux Отправлено: 01 Февраля, 2014 - 07:25:10 • Тема: Безопасная обработка форм • Форум: Вопросы новичков

Ответов: 5
Просмотров: 373
teddy пишет:
$getParams = array_map(function($val){
return trim(strip_tags($val));
},$_GET);
var_dump($getParams);

Цитата:
Parse error: parse error, unexpected T_VARIABLE in T:\home\virtual\nawatar-ru\test.php on line 2

Нужно понимать так?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $getParams = array_map('val',$_GET);
  3. var_dump($getParams);
  4. function val($val){
  5.    return trim(strip_tags($val));
  6. }
  7. ?>

Каким образом здесь можно создать полбзовательский фильтр?
teddy пишет:
а лучше препарированные запросы и нафиг эскейп стринги

Я же чужую программу ставлю! Не я запросы придумывал. Насчет килограмма кода согласен, достаточно одного самого жесткого фильтра, остальное в соответствии с программой.
(Добавление)
teddy пишет:
И да... если пишем в базу, то в array_map добавите ещё real escape string

Для этого соединение с базой уже должно существовать?
(Добавление)
teddy пишет:
а лучше препарированные запросы и нафиг эскейп стринги

http://www.php.net/manual/ru/pdo.prepared-statements.php пишет:
Параметры подготовленного запроса не требуется экранировать кавычками; драйвер это делает автоматически. Если в приложении используются исключительно подготовленные запросы, разработчик может быть уверен, что никаких SQL инъекций случиться не может (однако, если другие части текста запроса записаны с неэкранированными символами, SQL инъекции все же возможны; здесь речь идет именно о параметрах).

Бздительность лишней не бывает?
neolinux Отправлено: 30 Января, 2014 - 15:46:55 • Тема: Безопасная обработка форм • Форум: Вопросы новичков

Ответов: 5
Просмотров: 373
drfreud пишет:
Простейший вариант:

как затычка, замечательно подходит, но не гарантирует корректного ввода.
dfg@ghj.@lk - пропускает.
neolinux Отправлено: 22 Января, 2014 - 11:04:41 • Тема: Безопасная обработка форм • Форум: Вопросы новичков

Ответов: 5
Просмотров: 373
При использовании приложений полученных из интернета, возникает возможность дыры в безопасности. Вдруг программа не проверила введенные пользователем данные? Решил в начале загрузки проверять весь пользовательский ввод
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. // post cooke session
  3. if(!isset($type))
  4. {
  5.   $temp=array_keys($_GET);
  6.   foreach($temp as $value)
  7.   { // по умолчанию грохаем все
  8.      $_GET[$value]=htmlspecialchars($_GET[$value]); // преобразует html
  9.      $_GET[$value]=escapeshellcmd($_GET[$value]); // экранирует опасные символы
  10.   }
  11. }
  12. elseif($type==='htmltext')
  13. {// поля блогов, где необходим ввод кода
  14.   $temp=array_keys($_GET);
  15.   foreach($temp as $value)
  16.   {
  17.      $_GET[$value]=htmlspecialchars($_GET[$value]); // преобразует html
  18.      $_GET[$value]=addslashes(($_GET[$value]); // экранирует опасные символы
  19.   }
  20. }
  21. elseif($type==='nohtmltext')
  22. {// поля блогов, где удаляем ввод кода
  23.   $temp=array_keys($_GET);
  24.   foreach($temp as $value)
  25.   {
  26.      $_GET[$value]=strip_tags($_GET[$value]); // удаляет html
  27.      $_GET[$value]=addslashes(($_GET[$value]); // экранирует опасные символы
  28.   }
  29. }
  30. elseif($type==='exec')
  31. {
  32.   $temp=array_keys($_GET);
  33.   foreach($temp as $value)
  34.   {
  35.      $_GET[$value]=escapeshellcmd($_GET[$value]); // экранирует опасные символы
  36.   }
  37. }
  38. elseif($type==='sql_v1')
  39. {// поля, учавствующие в sql запросах. первый вариант
  40.   $temp=array_keys($_GET);
  41.   foreach($temp as $value)
  42.   {
  43.      $_GET[$value]=mysql_escape_string($_GET[$value]); // экранирует опасные символы
  44.   }
  45. }
  46. elseif($type==='sql_v2')
  47. {// поля, участвующие в sql запросах. второй вариант
  48.   $temp=array_keys($_GET);
  49.   foreach($temp as $value)
  50.   {
  51.      $_GET[$value]=addslashes(($_GET[$value]); // экранирует опасные символы
  52.   }
  53. }
  54. ?>
Аналогично обрабатывается post, cooke и session. Это лишь базовая проверка, пытающаяся "заткнуть" возможную дырку. Тип поля по умолчанию подойдет для логинов, паролей, других полей анкетирования. Остальные типы описаны в коде. Что я пропусти (типы полей, проверка)? Пожалуй нужно еще тип для email. Как лучше проверить?
neolinux Отправлено: 09 Января, 2014 - 08:56:10 • Тема: История посещений сайта • Форум: Вопросы новичков

Ответов: 12
Просмотров: 423
DelphinPRO пишет:
мой курсовой проект.
это в корне меняет дело.
А я думал, это личный выбор. Мне, например, он понадобился, чтобы с гугловской рекламмой разобраться. Клики идут, а он Гугл не отображает.
Что касается счетчиков поисковиков, вешать их придется и не один. Иначе хорошей отдачи от них не дождаться. На основании этих данных они и строят рейтинги. По крайней мере, после установки счетчика mail пошли и посетители с него. До этого не было.
(Добавление)
GEN_18 пишет:
Но если все записывать последовательно
А на сколько подробные логи нужны? Может достаточно идентифицировать пользователя, помечать его приход в эти сутки, количество посетителей +1 и внутренние переходы, не зависимо от пользователя +1. Если нужна статистика кликов - аналогично посещениям.
neolinux Отправлено: 08 Января, 2014 - 14:25:37 • Тема: Управление областью видимости переменными • Форум: Вопросы новичков

Ответов: 3
Просмотров: 163
caballero пишет:
этот пример распространяется не только на свойства класса но и на его методы
Я не предполагал использование классов.
caballero пишет:
Но даже тут есть свои лазейки, можно получить доступ и к приватным свойствам класса
Это меня и интересует. Я имел в виду namespace.
(Добавление)
Доступ к коду и его модификация со стороны пользовательских скриптов не предполагается
neolinux Отправлено: 08 Января, 2014 - 10:35:59 • Тема: Управление областью видимости переменными • Форум: Вопросы новичков

Ответов: 3
Просмотров: 163
С целью ограничения доступа, спрятал массив переменных в тело функции. Краем уха подслушал, что в PHP 5.3 введено управление областями видимости переменных. Не был ли мой труд тщетным? Не смогут ли пользовательские скрипты получать прямой доступ к массиву, если я в теле функции не создавал явной области видимости? И есть ли возможность это дело запретить?
neolinux Отправлено: 08 Января, 2014 - 10:24:57 • Тема: Запись с инпута в текстовый файл • Форум: Напишите за меня, пожалуйста

Ответов: 11
Просмотров: 91
nawatar drv. В архиве файлы: /programs/user-rw, /nawatar/drv/mail/majler.drv.php, /nawatar/drv/userf/userf.php.
Думаю, выдернуть нужный код не составит труда?
neolinux Отправлено: 17 Декабря, 2013 - 16:09:36 • Тема: Приватное подключение к БД • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
caballero пишет:
мутотень - твоя идея

Откуда такое стремление к оскорблениям?
И это те люди, что образуют контент форума!!!!
(Добавление)
DelphinPRO пишет:
Откуда такая паранойя?

Не скажу, заплюют
neolinux Отправлено: 17 Декабря, 2013 - 14:40:12 • Тема: Приватное подключение к БД • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
caballero пишет:
никакое ООп не помешает скрипту вызвать mysql_query и обратится к БД

Я тоже так считаю
была мысль: в самой программе удалить код подключения к БД. Перед передачей ей управления выполнить mysqlc_db_connect() (см. в начале), по возврату - mysqlc_db_close(). Это бы свело к минимуму изменения в самой программе. Но если одна БД на сайт, нужно контролировать в какую таблицу лезет скрипт, а менять все mysqlc_query() на mysqlc_query_db - это уже мутатень.
(Добавление)
Может парсер PHP какой существует? Чтобы скрипты ставить не копированием, а через инсталятор. Заотно и include() заменить.
neolinux Отправлено: 16 Декабря, 2013 - 21:00:09 • Тема: Приватное подключение к БД • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
esterio пишет:
А учитивая предидущие топикы ТС, он не хочет использовать ООП

Как это реализовать на ООП?
neolinux Отправлено: 16 Декабря, 2013 - 13:57:09 • Тема: Приватное подключение к БД • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
DelphinPRO пишет:
Имеется ввиду что ваш скрипт будет использоваться как библиотека?

Да.
DelphinPRO пишет:
Всегда можно самому поключится, зная параметры доступа

Сторонние скрипты не смогут получить параметров подключения
DeepVarvar пишет:
Инкапсуляцией
и
DelphinPRO пишет:
Запретить доступ к текущему подлючению, вероятно можно, реализовав синглтон

Здесь можно чуть подробнее. Хотя бы - куда копать?
(Добавление)
DeepVarvar
У меня уже возникала неприятная ситуация из-за отсутствия отображения значка модератора в IE8 (на заметку)
neolinux Отправлено: 16 Декабря, 2013 - 08:59:26 • Тема: Приватное подключение к БД • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
Есть следующий скрипт
CODE (htmlphp):
скопировать код в буфер обмена
  1. /* Функции взаимодействия с системным массивом */
  2. /* setsys()
  3. Записывает данные в элемент системпого массива */
  4. function setsys($element, $data)
  5. {
  6.    GLOBAL $SYS_NW;
  7.    $el=explode('.',$element);
  8.    $i=count($el);
  9.    if($i==1)$SYS_NW[$element]=$data;
  10.    elseif($i==2)$SYS_NW[$el[0]][$el[1]]=$data;
  11.    elseif($i==3)$SYS_NW[$el[0]][$el[1]][$el[2]]=$data;
  12.    elseif($i==4)$SYS_NW[$el[0]][$el[1]][$el[2]][$el[3]]=$data;
  13.    elseif($i==5)$SYS_NW[$el[0]][$el[1]][$el[2]][$el[3]][$el[4]]=$data;
  14.    else return false;
  15.    return true;
  16. }
  17.  
  18. /* getsys()
  19. Возвращает значение элемента массива */
  20. function getsys($element)
  21. {
  22.    GLOBAL $SYS_NW;
  23.    $el=explode('.',$element);
  24.    $i=count($el);
  25.    if($i==1)return $SYS_NW[$element];
  26.    elseif($i==2)return $SYS_NW[$el[0]][$el[1]];
  27.    elseif($i==3)return $SYS_NW[$el[0]][$el[1]][$el[2]];
  28.    elseif($i==4)return $SYS_NW[$el[0]][$el[1]][$el[2]][$el[3]];
  29.    elseif($i==5)return $SYS_NW[$el[0]][$el[1]][$el[2]][$el[3]][$el[4]];
  30.    else return false;
  31. }
  32. function mysqlc_db_connect($server,$user,$password,$database)
  33.    {
  34.       setsys('app.mysql.other.server',mysql_connect($server, $user, $password)); // подключение к серверу
  35.       if(getsys('app.mysql.other.server'))
  36.       {
  37.          $dbselect=mysql_select_db($database); // активация БД
  38.          if(!$dbselect)
  39.          {
  40.             mysql_close(getsys('app.mysql.other.server'));
  41.             setsys('app.mysql.other.server','');
  42.             setsys('app.mysql.error',56);
  43.             return false;
  44.          }
  45.          else
  46.          {
  47.             setsys('app.mysql.other.dbselect',$database);
  48.             return true;
  49.          }
  50.       }
  51.       else
  52.       {
  53.          setsys('app.mysql.error',55);
  54.          return false;
  55.       }
  56.    }
  57.  
  58.  
  59.    /* закрывает соединение с базой данных */
  60.    function mysqlc_db_close()
  61.    {
  62.       getsys('app.mysql.other.server');
  63.       if(func_num_args()>0) return mysql_close(func_get_arg(0));
  64.       else return mysql_close(getsys('app.mysql.other.server'));
  65.    }
  66.  
  67.    /* отправляет запрос активной БД */
  68.    function mysqlc_query_db($query="")
  69.    {
  70.       setsys('app.mysql.result',mysql_query($query));
  71.  
  72.       if(getsys('app.mysql.result'))
  73.       {
  74.          return getsys('app.mysql.result');
  75.       }
  76.       else
  77.       {
  78.          setsys('app.mysql.error',57);
  79.          return false;
  80.       }
  81.    }

Еще не реализовал, но функции setsys() и getsys() будут запрещать доступ приложений к массиву, соответственно, сторонние скрипты не смогут получить параметры подключения. Но они смогут обращаться напрямую к активной БД.
Возможно ли запретить им такое действие? Или, как иначе можно скрыть от них подключение к БД?
neolinux Отправлено: 13 Декабря, 2013 - 12:07:31 • Тема: Универсальна ли ADODB • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 38
[quote=caballero]Так не лезь в мои темы! Или у вас больше активность создавать некому?

caballero пишет:
Гораздо вероятнее встретить например Doctrine

Из документации: "Доктрина всегда добовляет первичный ключ "ID" к таблицам..."
Насколько я понял, Doctrine не сможет работать с уже существующими ьазами?
neolinux Отправлено: 13 Декабря, 2013 - 08:13:54 • Тема: Универсальна ли ADODB • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 38
Подскажите неразумному:

Предоставляет ли ADODB универсальные средства работы с базами данных? Другими словами, если приложение использует, к примеру, MSSQL я смогу без изменений скриптов перенести его на MySQL?

Используют ли популярные фреймворки и CMS ADODB синтаксис? Или для использования приложения, его использующего, необходимо устанавливать и ADO?

Оправдано ли использование ADODB в проекте с точки зрения унификации приложений, устанавливаемых в будущем. Другими словами, найдется ли достаточное количество программ, распространяемых как отдельно, так и для работы в составе других CMS, использующих его.
neolinux Отправлено: 13 Декабря, 2013 - 06:09:07 • Тема: Альтернатива ООП • Форум: Корзина

Ответов: 31
Просмотров: 8764
Как вы относитесь к стилю программирования в ADODB. Автор использует классы ООП и отказался от создания самих объектов. При этом автор adodb и многие другие программисты отмечают, что именно такой подход к ООП позволяет ЗНАЧИТЕЛЬНО увеличить производительность.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB