Найти - Пользователи
Полная версия: проверка на sid.
Начало » Web » проверка на sid.
1 2
flashi4
подскажите плз как сделать защиту по тому, что уже есть… Написал вроде по логике правильно, но что-то не работает. Пофиксите кто может.


генерация 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')
Viper
Непонятно зачем нужны строки

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

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

Но как вырвать его из базы данных, если он у меня записан?
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!'
flashi4
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
shiza
flashi4
mysql
но я делаю request.params…
хм. а в чем ты это делаешь?
т.е. вероятно у тебя какая-то обертка к Базе данных или фреймворк со встроенной оберткой.
Если это так, то для однообразия и надо так делать.
flashi4
подскажи как обратиться к базе данных MySQL через Python ???

тока опиши поподробней а то я не допираю
shiza
описать-то я опишу. но у тебя по ходу дела другой случай.
приведи сюда - какие модули ты импортируешь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB