Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2008 10:31:17

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

подскажите плз как сделать защиту по тому, что уже есть… Написал вроде по логике правильно, но что-то не работает. Пофиксите кто может.


генерация sid. все генерируется и в базу у меня заносится. это просто пример.

 def saved_session(self, tag='gen'):
t1 = time.time()
time.sleep( random.random() )
t2 = time.time()
base = md5.new( tag + str(t1 +t2) )
sid = base.hexdigest()
return sid
это код на защиту при убирании или добавлении хотя бы одной буковки в sid. Он не верен… здесь идет работа с базой.
нужно сравнить сид который в url с сидом в базе. если они совпадают, то сессия удачна, ежели нет, то пишем ББ!

def private(self):
if len(request.params) > 1 :
record = model.Addr()
record.ssid = request.params['ssid']
record = model.Addr.get_by(ssid = request.params['ssid'])
if record and record.ssid == request.params['ssid']:
session['ssid'] = request.params['ssid']
session.save()
h.redirect_to(action='vnc')
return Response ('Error')



Отредактировано (Фев. 15, 2008 10:33:11)

Офлайн

#2 Фев. 15, 2008 11:35:15

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

Непонятно зачем нужны строки

record = model.Addr()
record.ssid = request.params
Если после этого ты сразу переприсваиваешь record. Возможно лучше заменить их на record = None?
Так же условие record.ssid == request.params не имеет особого смысла, поскольку именно по этому параметру ты выбираешь из базы.



Офлайн

#3 Фев. 15, 2008 11:41:01

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

Viper
Непонятно зачем нужны строки

record = model.Addr()
record.ssid = request.params
Если после этого ты сразу переприсваиваешь record. Возможно лучше заменить их на record = None?
Так же условие record.ssid == request.params не имеет особого смысла, поскольку именно по этому параметру ты выбираешь из базы.
можешь подсказать как мне сравнить имеющийся сид в url с сидом в базе?



Отредактировано (Фев. 15, 2008 11:49:50)

Офлайн

#4 Фев. 15, 2008 12:58:37

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

Я могу тебе подсказать что-то, но задавай более конкретные вопросы. Твой код сравнения выглядит нормальным (кроме описаных выше замечаний), если у тебя он не работает или работает не так как надо, то конкретно опиши когда это происходит, что в базе, что на входе в ф-цию.



Офлайн

#5 Фев. 16, 2008 12:57:16

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

Viper
Я могу тебе подсказать что-то, но задавай более конкретные вопросы. Твой код сравнения выглядит нормальным (кроме описаных выше замечаний), если у тебя он не работает или работает не так как надо, то конкретно опиши когда это происходит, что в базе, что на входе в ф-цию.
Как вырвать sid из URL я знаю…

Но как вырвать его из базы данных, если он у меня записан?



Офлайн

#6 Фев. 16, 2008 15:10:26

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

Зависит от базы данных, которую ты используешь.

Обычно это что-то типа:

connection = db.connect(bla-bla-bla)
cursor = connection.cursor()

cursor.execute("SELECT sid FROM sessions WHERE sid = %s", (sid))
rezult = cursor.fetchone()

cursor.close()
connection.close()

if result:
print 'yes!'
else:
print 'no!'



Офлайн

#7 Фев. 16, 2008 15:25:15

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

shiza
Зависит от базы данных, которую ты используешь.

Обычно это что-то типа:

connection = db.connect(bla-bla-bla)
cursor = connection.cursor()

cursor.execute("SELECT sid FROM sessions WHERE sid = %s", (sid))
rezult = cursor.fetchone()

cursor.close()
connection.close()

if result:
print 'yes!'
else:
print 'no!'
mysql
но я делаю request.params…





connection = db.connect(что тут написать?) Если у меня база данный называется VNC и находится в MySQL
cursor = connection.cursor(что тут написать?)

остальное вроде понятно ….


+ написал это мне в ответ ошибка:

exceptions.NameError: global name ‘db’ is not defined



Отредактировано (Фев. 16, 2008 15:28:41)

Офлайн

#8 Фев. 16, 2008 15:32:33

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

flashi4
mysql
но я делаю request.params…
хм. а в чем ты это делаешь?
т.е. вероятно у тебя какая-то обертка к Базе данных или фреймворк со встроенной оберткой.
Если это так, то для однообразия и надо так делать.



Офлайн

#9 Фев. 16, 2008 15:42:45

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

подскажи как обратиться к базе данных MySQL через Python ???

тока опиши поподробней а то я не допираю



Отредактировано (Фев. 16, 2008 15:47:11)

Офлайн

#10 Фев. 16, 2008 17:36:33

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка на sid.

описать-то я опишу. но у тебя по ходу дела другой случай.
приведи сюда - какие модули ты импортируешь.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version