Олдфа
г, это важно. :)
Я поясню свою позицию. Почему я не все принимаю на ура. Я по образованию и по старой профессии электронщик. И у меня на генетическом уровне заложено досконально и скурпулезно разбираться в процессах, иначе электронщику невозможно отловить баг. В электронике есть конечно подобие тестов, но там нет интерпретатора ошибок. Если что-либо сделал неверно, результат один - "включаем в сеть: идет дым".
В электронике есть и другая сторона - производство. Заводы, где штампуют телевизоры допустим. Раньше на них работали девочки с паяльниками, сейчас роботы. Так вот, эти девочки не особо то задурялись, как и что там устроено. Они знали куда нужно припаять свою группу деталей, что бы на выходе образовался продукт. Это очень похоже на вашу neo-school, как ты выразился. Вы не греете голову, почему именно так, вы принимаете все на веру. Вы на сегодняшний момент девочки с паяльниками. Это не оскорбление, это аналогия. Скоро вас заменят роботы.
Но останутся разработчики и ремонтники. Те, кто понимает толк в самых низовых алгоритмах (читай:строят велосипеды), а не хапают готовое. Оно хорошо только на конвеере.
Вот из нашего спора можно допустим вывести такую логическую цепочку.
Примем как постулат (хотя это спорно, есть яростные приверженцы и противоположного подход, но пусть), что security by obscurity - это плохо. Откроем на всеобщее обозрение код. Огромными буквами, пусть все видят:
$salt = generateSalt(15);
$hash = crypt($password . IRB_SALT, $salt);
Мы нарушили принцип Керхгоффса? Это можно считать security by obscurity?
Ответ однозначен -
нет. Ибо алгоритм открыт и доступен, мы держим в секрете только ключ (IRB_SALT). Пусть я тут для большей ясности соглашусь с терминологией.
Это собственно и не отрицалось, просто декларировалось как ненужное телодвижение. Но стало ли от этого хуже? Испортилась ли криптостойкость? Ответ тоже может быть только один, и это очевидно - нет. Стало лучше. Не силно, но все же.
Теперь изменим немного код. применив вместо crypt() мою многострадальную функцию:
$salt = generateSalt(15);
$hash = cryptPassword($password, IRB_SALT . $salt);
Ну и разумеется приложим
исходный код функции.
Что изменилось? Принципы не нарушены, все тоже самое. Но оппонент сразу же делает охотничью стойку: ВЕЛОСИПЕД!!! Хотя совершенно не гнушается целым классом хэлпера, по сути выполняющим ту же роль. Подготавка алгоритма и хэширование данных. Но это для него святое, это конвеер. Потому что он по сути девочка с паяльником (помним про аналогии).
Теперь последний штрих. Контрольный в голову. Дополняем вызов функции еще одним
ключем.
$salt = generateSalt(15);
$hash = cryptPassword($password, IRB_SALT . $salt, IRB_LOGIC);
Все осталось на своих местах. Алгоритм открыт, ни кто не прячется. Мы просто принимаем меры к защите и сохранности
ключа (IRB_LOGIC) . Что как раз и отвечает принципам Керхгоффса. Но тут начинается полная истерика и обвинения во всех смертных и переходом на личности. Вед как я, олдфаг, посмел посягнуть на святое? Как я посмел сам(!), без помощи фреймворка(!) собрать функцию? Это же крамола. Это же security by obscurity и нарушение Женевской конвенции!
Хотя совершенно не понял сути. Ну ни на миллиметр. Что тут и не пахнет security by obscurity. И что защищенная таким образом база данных надежнее. Просто надежнее и все. Даже если и попадет в тот один процент, который он задекларировал, все равно есть за что бороться.
Ну и конечно же никакой самостоятельной мысли и быть не может. Приверженцы новой школы привыкли думать не мозгами, а пруфами. Не понимая, что за этими пруфами большей частью такие же как они сами девочки с паяльниками.
Я не стесняюсь говорить, что учусь. На ошибках тоже. И этот спор мне принес довольно ощутимый профит. Ибо то, чего я не знаю, выглядет как останкинская башня рядом с палочкой от эскимо, по сравнению с тем, что я знаю. Но вот
MiksIr вряд ли способен на такое. И уж тем более он не способен признать свою неправоту. Ибо он молод, горяч, скор на расправу и ему некогда подумать.
А я олдфаг. И доволен этим. Как в анекдоте про двух быков на пригорке. Я медленно, медленно спущусь и медленно перетопчу все стадо, пока такие как вы будут суетиться между Буренкой и Зорькой.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.