Комментарии 13
А покутить ? :)
НЛО прилетело и опубликовало эту надпись здесь
Вообще говоря, бороться с этим бесползено. Люди любо понимают, либо не понимают. Почему? В качестве примера я люблю вспоминать громкие истории про вирусы и антивирусы. Сколько лет подряд все твердят "не запускайте файлы, пришедшие по почте!"? Однако количество внутрисетевых атак как бы не сильно уменьшилось, по прежнему то там то тут можно услышать как "кто-то запустил очередной аттач и всё рухнуло".
Такая ситуация будет повторятся, её вряд ли искоренишь, и какой-то определённый процент людей, не понимающих, что такое SQL injection, XSS и прочие радости жизни, будет всегда и везде.
Люди не читают (много ли программистов читало code complete?) ни книги, ни чужой код, банально ссылаясь на недостаток времени, а отсюда нет роста в знаниях даже над самим собой.
Такая ситуация будет повторятся, её вряд ли искоренишь, и какой-то определённый процент людей, не понимающих, что такое SQL injection, XSS и прочие радости жизни, будет всегда и везде.
Люди не читают (много ли программистов читало code complete?) ни книги, ни чужой код, банально ссылаясь на недостаток времени, а отсюда нет роста в знаниях даже над самим собой.
Могу добавить лишь, что если вы вдохновились и решили перешерстить защиту своих сайтов - необязательно даже писать кучу функций для разнообразных проверок -
ибо основные из них свободно распространяются (я так понимаю обновляются и совершенствуются) например ЗДЕСЬ.
ибо основные из них свободно распространяются (я так понимаю обновляются и совершенствуются) например ЗДЕСЬ.
Написание кода, в котором отсутствуют "дыры" требует от разработчика гениальности...
За использование assertions для проверки пользовательского ввода оторвал бы руки!
Тут все же идет речь о том, что нужно проверять входящие данные наиболее удобными/адекватными методами. Какими именно в конкретных случаях - это уже другой разговор.
Входящие данные после некоторой проверки попадают в методы/функции и как раз тут может быть полезно сделать несколько assertions. В конкретном примере c тазиками, это утверждение (iQuantity > 0, iItemPrice > 0, etc) может быть добавлено в метод подсчитывающий общую сумму заказа.
Возможно, что этот метод будет скопирован в другую программу, где проверка входящих данных с пользовательского интерфейса реализована некорректно. Программа тогда сработает принципу «мусор на входе – ничего на выходе», т.к. вывалится с ошибкой. Но это значительно лучше, чем совершение некорректной транзакции.
Конечно, пример условный. Конкретное решение всегда зависит от множества параметров - языка разработки, используемых паттернов, стандартов кодирования, программных компонентов и так далее.
Входящие данные после некоторой проверки попадают в методы/функции и как раз тут может быть полезно сделать несколько assertions. В конкретном примере c тазиками, это утверждение (iQuantity > 0, iItemPrice > 0, etc) может быть добавлено в метод подсчитывающий общую сумму заказа.
Возможно, что этот метод будет скопирован в другую программу, где проверка входящих данных с пользовательского интерфейса реализована некорректно. Программа тогда сработает принципу «мусор на входе – ничего на выходе», т.к. вывалится с ошибкой. Но это значительно лучше, чем совершение некорректной транзакции.
Конечно, пример условный. Конкретное решение всегда зависит от множества параметров - языка разработки, используемых паттернов, стандартов кодирования, программных компонентов и так далее.
то что мусор на входе не стоит заменять на дефаулт значения это ясно, а где книгу купить?
Книга эта известная и популярная, должна продаваться в большинстве магазинов.
Например, некоторые варианты.
Кроме того, в сети гуляет .deju вариант, но я его скачать не смог :)
Например, некоторые варианты.
Кроме того, в сети гуляет .deju вариант, но я его скачать не смог :)
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Качественный код: проверка данных обязательна