Самолёт без крыльев
Я всегда говорил, что спроектировать OLTP-систему без bind-переменных - это всё равно, что построить самолёт без крыльев. В том смысле, что построившие самолёт без крыльев инженеры знают о самолётостроении столько же, сколько такие разработчики знают о СУБД Oracle.
Конечно, можно приклеить крылья. К сожалению, нельзя точно так же "приклеить" дизайн. Летать, скорее всего, всё равно ничего не будет.
Вы уже поняли - я не буду ожидать от такой системы ничего хорошего.
Можно не шифровать?
Среди прочего, в ссылке чуть выше, я упоминаю, что они использовали фиксированный ключ DES для шифрования пароля, который можно легко достать просто сделав rewrap пакета.
Оказалось, что даже такое шифрование скорее выглядит как пустая потеря времени.
Последний раз я видел нечто подобное, когда последний раз был в Екатеринбурге. Разработчики (или я должен называть их кодерами?) забыли использовать bind-переменные в функциях аутентификации. В итоге, все имена пользователей с соответсвующими паролями были просто видны в v$sql.
Пришло время для очередной вариации. Заглянув в v$sql, я обнаружил там следующее:
select CHR(98)||CHR(117)||CHR(108)||CHR(107)||CHR(105)||
CHR(110)||CHR(97) from dual
select CHR(112)||CHR(111)||CHR(122)||CHR(100)||CHR(110)||
CHR(101)||CHR(118) from dual
select CHR(74)||CHR(117)||CHR(107)||CHR(111)||CHR(118)||
CHR(97) from dual
и так далее... Угадайте что это. Это пароли.
Не выглядят ли все попытки обеспечить безопасность на фоне таких систем как бронирование парадной двери, в то время как с чёрного хода к вам уже ломятся мародёры?
gather_plan_statistics – 2
11 hours ago


Тем не менее тебе же нужен доступ к этому самому v$sql, восстановив с дампа тут уж ничего не увидишь, но в любом случае они не усложнили взлом паролей, а просто усложнили процедуру аутентификации. Это то, что называется code obfuscation, некоторые пользуются. Но в данном случае совершенно безграмотно. Правда я совершенно не понимаю, зачем надо делать выборку "select 'пароль' from dual"
ReplyDeleteexo,
ReplyDeleteэта же информация про пароли может быть получена и из v$open_cursor, например...
Ограничивать доступ к этим вьюшкам исключительно из целей безопасности - на мой взгляд, не более чем security through obscurity.
Как показывает практика, понимание вовсе не обязательное условия для того, чтобы это кто-то реализовал :)
Ну... как говортся, нет предела человеческой глупости ©не помню кто сказал
ReplyDeleteЯ плакаль...
ReplyDeletebulkina
pozdnev
Jukova
case-sensitive? :)
Alex,
ReplyDelete"case-sensitive? :)"
Да, регистр остаётся как есть.