Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Безопасность и pg_query_params / 8 сообщений из 8, страница 1 из 1
11.03.2014, 03:30:05
    #38582642
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
Использую pg_query_params для записи и обновлении данных от пользователей на PHP

имеет ли смысл для большей безопасности использовать функции PHP

1) strip_tags htmlentities htmlspecialchars для всех текстовых полей
2) intval для всех числовых полей

Функцию pg_escape_string перестал использовать когда перешел на pg_query_params, она добавляла не нужное экранирование, а вот насчет других функций не уверен, посоветуйте как лучше.
...
Рейтинг: 0 / 0
11.03.2014, 07:41:58
    #38582664
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
tromИспользую pg_query_params для записи и обновлении данных от пользователей на PHP

имеет ли смысл для большей безопасности использовать функции PHP

1) strip_tags htmlentities htmlspecialchars для всех текстовых полей
2) intval для всех числовых полей

Функцию pg_escape_string перестал использовать когда перешел на pg_query_params, она добавляла не нужное экранирование, а вот насчет других функций не уверен, посоветуйте как лучше.

вопрос 1) это вообще не про postgresql

вопрос 2) - да но не только и не столько по соображениям безопасности сколько чтобы мусор до базы не доходил... и ошибки так легче ловить.
...
Рейтинг: 0 / 0
11.03.2014, 22:54:56
    #38583422
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
Maxim Boguk,

вопрос 1)
ну как я понял всякие теги итд в запросе могут вызывать sql интекции и другие взломы и вопрос в том если я использую pg_query_params мне эти теги и любые символы угрозы не несут или все таки несут ?
...
Рейтинг: 0 / 0
13.03.2014, 16:09:32
    #38585373
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
trom, смотря как используете, если правильно, то не несут.
...
Рейтинг: 0 / 0
14.03.2014, 10:08:27
    #38585927
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
Ёш,

Как я могу использовать pg_query_params чтобы получить sql инъекцию ?
если strip_tags htmlentities htmlspecialchars из PHP помогут сдлеать сайт чуть более безопасным я их применю и все.

Кто нить ответит про strip_tags htmlentities htmlspecialchars из PHP помогут ли они ?
...
Рейтинг: 0 / 0
14.03.2014, 13:10:59
    #38586196
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
trom, работа pg_query_params основана на движке prepare запросов, а prepare позволяет писать переменные не в любом месте запроса и иногда текст запроса приходится формировать руками, например при подстановке имени таблицы, вот здесь возможна инъекция:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
$table_name = $_GET['category'];

$res = pg_query_params(
  sprintf(
    'select * from catalog.%s where id = $1', $table_name
  ),
  [ $id ]
);



если у Вас текст запроса - константа, то pg_query_params безопасен.

PS: а strip_tags htmlentities htmlspecialchars это безопасность HTML, защита от XSS и т.д., к базе это отношения не имеет.
...
Рейтинг: 0 / 0
14.03.2014, 19:06:57
    #38586778
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
Ёш,

А как защититься от иньекции по вашему примеру, какие данные и как нужно фильтровать в PHP ?

по strip_tags htmlentities htmlspecialchars понял это нужно и защитит меня но к postgres не относится
...
Рейтинг: 0 / 0
15.03.2014, 04:10:37
    #38587034
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность и pg_query_params
trom,

в этом примере, поскольку экранируем имя таблицы то есть SQL идентификатор , то нужно использовать pg_escape_identifier:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$table_name = $_GET['category'];

$res = pg_query_params(
  sprintf(
    'select * from catalog.%s where id = $1', pg_escape_identifier($conn, $table_name)
  ),
  [ $id ]
);



а $id экранировать не нужно, потому что pg_query_params передаёт свои параметры отдельно от тела запроса.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Безопасность и pg_query_params / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]