Показать сообщение отдельно
Старый 20.09.2016, 19:47   #2
HeartLESS
 
Регистрация: 25.04.2012
Сообщений: 101
Репутация: 31
По умолчанию

Цитата:
Сообщение от Tr3v0r Посмотреть сообщение
Всем привет! Есть следующий код на питоне/постгресе:

return do_sql_query(""" SELECT user, pass FROM users WHERE user = '{0}', pass = '{1}' """.format(username.replace("'", "''"), password.replace("'", "''"))

Параметры username и password контролирует удаленный пользователь.

Подскажите, пожалуйста, достаточно ли такого реплэйса для предотвращения инъекции?

Где-то видел статью, описывающую эксплуатацию такой (подобной) ситуации, но сейчас не могу найти ее. Там в качестве пайлоада передавали также обратную косую для экранирования первой кавычки, однако мне не удается повторить это. Запрос не ломается если в него попадают две одинарные кавычки, они расцениваются как символ строки.
username=\&password= or 1=1 -- -

Или в постгресе иначе экранируется? Так или иначе, не изобретай велосипед, всегда есть prepared statement
__________________
Jokester: Ок, с тобой проще согласиться чем переубедить. :)
HeartLESS вне форума   Ответить с цитированием