Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Защита от от SQL инъекции / 10 сообщений из 10, страница 1 из 1
03.01.2016, 14:46
    #39141589
Closius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Добрый день.

Есть такой запрос на Python:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
db.execute('''INSERT INTO messenger_message (text,
                                             datetime,
                                             sender_id,
                                             thread_id,
                                             is_read,
                                             is_deleted)
                          VALUES ('%s',
                                  '%s'::timestamptz,
                                  %s,
                                  %s,
                                  FALSE ,
                                  FALSE );'''
% (str(message),
datetime.datetime.now(datetime.timezone.utc),
user_id,
thread_id))



Подскажите плиз новичку как защитить его от SQL инъекции ?
...
Рейтинг: 0 / 0
03.01.2016, 14:53
    #39141592
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Использовать параметры вместо подставления литералов.
...
Рейтинг: 0 / 0
03.01.2016, 16:01
    #39141611
Closius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Dimitry Sibiryakov,

я решил передавать параметры как tuple
вместо " %s " % text
делать: " %s " , (text,)

Нормальное решение?
...
Рейтинг: 0 / 0
03.01.2016, 17:35
    #39141630
Roman Aka Magician
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Closius,
http://initd.org/psycopg/docs/usage.html Warning Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
The correct way to pass variables in a SQL command is using the second argument of the execute() method:

>>> SQL = "INSERT INTO authors (name) VALUES (%s);" # Note: no quotes
>>> data = ("O'Reilly", )
>>> cur.execute(SQL, data) # Note: no % operator
...
Рейтинг: 0 / 0
04.01.2016, 01:52
    #39141809
Closius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Roman Aka Magician,

Окей я понял. А через tuple нормальное решение? я протестировал, оно все экранирует, например такойю строку ";-- оно заэкранирует
...
Рейтинг: 0 / 0
04.01.2016, 23:31
    #39142183
Roman Aka Magician
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Closius,

Вставьте drop database для точного теста :)
...
Рейтинг: 0 / 0
06.01.2016, 11:26
    #39142639
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
ClosiusRoman Aka Magician,

Окей я понял. А через tuple нормальное решение? я протестировал, оно все экранирует, например такойю строку ";-- оно заэкранирует

передача параметров в запрос на самом деле как раз tupple и использует.
...
Рейтинг: 0 / 0
08.01.2016, 17:29
    #39143451
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Closius,

голая бд вряд ли где-то торчит во внешний мир... если речь про вэб дела:

почитайте книгу
"головоломки на PHP для хакера"

там разжованы и показаны(как задачи и ответы) не только эти проблемы по взлому вэб серваков.

(круглый)
...
Рейтинг: 0 / 0
18.02.2016, 23:05
    #39174817
Rad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
Если книга не поможет, то можно использовать программы которые могут помочь защититься. Можно посмотреть на dataarmor.ru или greensql.com ;)
...
Рейтинг: 0 / 0
19.02.2016, 10:18
    #39174985
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Защита от от SQL инъекции
kolobok0голая бд вряд ли где-то торчит во внешний мир+1
защита это комплекс мер. От замка на серверной, до клиента который защищает саму БД.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Защита от от SQL инъекции / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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