Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 15, 2013 11:34:02

esergion
Зарегистрирован: 2013-01-08
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

Доброго времени.
Python 2.6.6 debian squeeze
Пишу следующее:

    sql="""INSERT INTO demo_users.vpbxes (vpbx_id,extension1,secret1,pin1,extension2,secret2,pin2,is_free,queue,conference,group) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s') ;"""%(vpbx_id,extension1,secret1,pin1,extension2,secret2,pin2,free,queue,conference,group)
    sql=main_db.escape_string(str(sql))
    main_cursor.execute(sql)
    main_db.commit
В итоге:
Traceback (most recent call last):
  File "./demo_users.py", line 37, in <module>
    main_cursor.execute(sql)
  File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group) VALUES (\\'2\\',\\'1003\\',\\'KgCUC1o^,3jg;0^WF;jnGpPlDFLAB66X\\',\\'30940\\',\\'1' at line 1")

Пароли со спецсимволами (по технике безопасности! sip-подключения) типа KgCUC1o^,3jg;0^WF;jnGpPlDFLAB66X
Подскажите как заставить их вставляться правильно в запрос.

Офлайн

#2 Июнь 15, 2013 12:46:27

esergion
Зарегистрирован: 2013-01-08
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

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

Офлайн

#3 Июнь 15, 2013 13:18:24

esergion
Зарегистрирован: 2013-01-08
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

Ох уже эти апострофы и кавычки..

sql="""INSERT INTO `demo_users`.`vpbxes` (`vpbx_id`,`extension1`,`secret1`,`pin1`,`extension2`,`secret2`,`pin2`,`is_free`,`queue`,`conference`,`group`) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s') ;"""%(vpbx_id,extension1,secret1,pin1,extension2,secret2,pin2,free,queue,conference,group)
Так работает. Это критично использовать апострофы в запросах?

Офлайн

#4 Июнь 15, 2013 13:32:29

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

а если в апострофах оставить только `group`?

Офлайн

#5 Июнь 15, 2013 14:58:41

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

esergion
про атаки типа “sql инъекция” слышали? это небольшой намек на то как происходит подстановка значений в запрос



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Июнь 15, 2013 16:40:00)

Офлайн

#6 Июнь 16, 2013 06:06:51

esergion
Зарегистрирован: 2013-01-08
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Спецсимволы в SQL запросе

Конечно слышал, только это просто скриптик формирующий таблички рабочие, данных никаких не вводится.
По поводу апострофов только для group попробую позже

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version