Ви активно думаєте про безпеку при кодуванні?


9

Коли ви кодуєте, чи активно ви думаєте про те, що ваш код може використовуватися таким чином, яким він не був призначений для початку, і, таким чином, отримати доступ до захищеної інформації, запуску команд чи чогось іншого, чого ви не хотіли б робити вашим користувачам?


При кодуванні чого? Я роблю багато різних речей.
Девід Торнлі

9
Так, часто. Зазвичай у фразах, схожих на "чорт, я не маю часу, сподіваюся, ніхто не дізнається".
liori

Відповіді:


10

Типу. Відмова: Я хлопець із безпеки;)

Тож як я працюю, це те, що у мене є своя модель загроз, яка описує, які типи атак з боку типових нападників є ймовірними. Це допомагає опрацювати вимоги безпеки. Коли я насправді кодую, я виконую звичайні практики "безпечного кодування", наприклад, будьте обережні, що змінні курсора завжди знаходяться в межах, сапсований ввід дезінфікується, обробляються умови помилок. Потім я повертаюсь до своєї моделі загроз, щоб побачити, які модулі найчастіше нападають нападників; ті отримують додатковий огляд.


4

Я використовую стандартні галузеві практики, як-от використання параметрів SQL. Я використовую "безпечні" платформи, як-от .NET Framework, і використовую такі функції безпеки, як маркери проти підробки в ASP.NET MVC. Я не пишу власні алгоритми шифрування, але я розумію, що ці шифрування забезпечують у вигляді переваг безпеки та коли мені потрібно використовувати їх для отримання цих переваг безпеки.

Коротше кажучи, я використовую кращі практики, але не розробляю власних інструментів безпеки. Я не є експертом з питань безпеки; Я покладаюся на інших експертів з безпеки, які, імовірно, вже глибоко замислювалися над цими питаннями, і чітко розуміють ризики та переваги.

Мій фундаментальний підхід до безпеки, окрім простого використання інструментів безпеки, полягає в тому, щоб усунути всі можливі входи в систему, крім тієї, на яку я очікую. Якщо у мене є номер номера соціального страхування, єдині символи, які насправді повинні відображатися, - це цифрові цифри та тире в певній схемі.

Я підтверджую введення користувачів як на клієнті, так і на сервері.


Я погоджуюся з використанням вбудованих функцій захисту, але, безумовно, вам доведеться подумати про те, коли і як доцільно їх використовувати. Треба сказати, що я стурбований тим, що покладаюся на те, щоб інші думали про безпеку вашого продукту. Вони цього не зробили.
Майкл Шоу

@Ptolemy: Коли не доцільно параметризувати оператор SQL? Коли не доцільно використовувати маркер проти підробки? Якщо дані чутливі, коли не доцільно використовувати шифрування?
Роберт Харві

Давайте на хвилину розглянемо шифрування. Перше питання, яке шифрування ви використовуєте? використання поганого шифрування дає помилкове відчуття безпеки. У якийсь момент вам доведеться розшифрувати дані. У який момент ви це робите, які ризики для цього є порівняно зі складністю коду. Який фактичний захист дає насправді шифрування? Чи зашифрований ваш байт-код dll чи може бути зачитаний ключ шифрування з DLL? Ось чому, просто використовувати функції з невеликим розумінням або взагалі не небезпечно.
Майкл Шоу

@Ptolemy: Якщо це ви маєте на увазі, думаючи про безпеку, то я згоден, ви дійсно повинні знати ці речі, щоб правильно використовувати ці інструменти.
Роберт Харві

3

Абсолютно.

Безпека - це все. І з чисельним програмним забезпеченням це два рази.
Лише днями користувач зумів знайти та використати помилку в одній зі своїх старих програм. Шкода була непоправною. Дивись нижче:

alt текст

Раніше він був круглим.


7
Це потребує подальшого пояснення :)
Toby Allen


2

Ні, тому що я не працюю в проблемній області, де доречна безпека (масовий візуалізація даних SW). Я робити є купа стверджує в своєму коді (перевірка індексу, перевірка узгодженості і т.д.), а не з - за міркувань безпеки, а тому , що я , як неправильний код аварії рано і аварії помітно.


1

Абсолютно. Я думаю про вразливості ін'єкцій, а також про те, як моя бізнес-логіка буде працювати в робочому середовищі порівняно з веб-середовищем, а також як безпека реалізується в обох типах середовищ.


1

Я не фахівець з безпеки, але коли кодую веб-програми, я завжди вважаю, що введення користувачів може містити всілякі дивацтва, і завжди слід повністю уникати подібних дій. Крім того, я обережно здійснюю дзвінки Ajax на сервер, щоб перевірити, чи користувач увійшов (якщо він повинен бути для цієї конкретної події) та чи мають вони права робити все, що вони намагаються зробити.

У кодовій базі є набір фільтрів для входів. Я ніколи не перевіряю PHP $_GETабо $_POSTмасиви безпосередньо. Замість цього я звертаюсь їх з допомогою функції Request::get('parameter', 'filter')з фільтрами , такими як int, textі деякими іншими. (І Request::post()для входів POST, звичайно.)


1

Так. Коли я працював над багатокористувацькою грою, всі були параноїком від подвигів та способів накрутки. Обман може повністю знищити гру, не кажучи вже про будь-які бізнес-моделі, пов’язані з продажем ігрових речей. Тож питання безпеки та заходи щодо несанкціонованого втручання були дуже важливими для порядку денного. Мені це дуже сподобалось. Я працював над іншими проектами, перш ніж вам довелося відчувати себе винуватими за те, що довше працювали над кодом, щоб переконатися, що він надійний.


0

Так. Безпека важлива і не повинна бути думкою; додавати безпеку після факту, як правило, складніше, ніж спочатку проектувати його в додаток, і якщо ви додасте його пізніше, ви, ймовірно, пропустите деякі речі (або просто не будете турбуватися, додаючи його взагалі).


0

Зрозумійте загальні принципи безпеки (цілісність, автентичність, повноваження), а потім прочитайте кілька книг про те, як люди підривали ці стовпи безпеки тисячоліттями, і ви будете приблизно на півдорозі.

Потім прочитайте кілька хороших книг про стратегії проектування та тестування, і ви дізнаєтесь, як спроектувати достовірність своєї архітектури.

Тепер ми доходимо до того, коли я думаю про безпеку. Я замислююся над тим, як я можу перевірити джерело даних, чи не має значення, якщо вони підроблені, хто є джерелом даних, наскільки я впевнений у цьому? як це можна було змінити тощо ...

Це впливає на дизайн. У файлах конфігурації можуть бути зашифровані ключові розділи, або окремі поля можуть бути в чистому тексті із пов'язаним полем підпису. З послугами, що стоять перед Інтернетом, все стає складніше, тому що слід очікувати більшого рівня ворожнечі.

Потім на тестуванні, як ви протестуєте все це. Які ваші максимальні дані, що відбувається, якщо ви висунете програмне забезпечення за ці межі, як це обробляти? Що він довіряє? як можна підробити цю довіру?


0

Так.

У минулому я мав справу з достатньою кількістю хакерів, щоб знати, що вони постійно намагаються скомпрометувати будь-який великий сайт, і там є достатньо ботів, що навіть невеликі сайти не є безпечними.

Я намагаюся постійно мислити, як хакер , до того моменту, коли інколи хвилюю своїх колег випадковими коментарями про те, як можна грати в системи, які ми щодня сприймаємо.


0

Це повинно бути чимось, що розробник вбудовує в процес в більшій чи меншій мірі, залежно від застосування тощо. На жаль, оскільки розробники не прагнуть цитувати безпеку, покупці не схильні думати про це ( Я знаю, це трохи прихильність-22, тому що якщо покупці хочуть найдешевших пропозицій, можливо, це не буде включати безпеку)

Як розробник, ви можете отримати певну перевагу, якщо будете кваліфікованими в цій галузі - я конкретно думаю про банки та фінансові послуги, але застосовні й інші галузі. В даний час вони можуть зарахувати 70-100 тис. Грн на навчання для нового випускника, який повинен бути прискорений щодо процесів, безпеки та інших особливостей для цієї організації. Якщо ви можете зекономити на цьому 30 тис., Це хороший резюме плюс!

У Великобританії, Інституті фахівців з інформаційної безпеки , а в Шотландії, Центр передового досвіду безпеки та кіберзлочинності тісно співпрацюють з університетами, щоб допомогти переглянути матеріали курсів, надавати гостям лекції про наслідки поганого кодування та полегшення літніх занять у реальному світі (наприклад, розробники програмного забезпечення розміщують у підрозділах шахрайства у правоохоронних органах.) Більшість організацій, що надають підтримку, роблять це безкоштовно, оскільки це має потенціал, щоб заощадити їм велику суму грошей - це для мене звучить як цінність.

(відмова від відповідальності - я був спеціалістом із безпеки для різних глобальних організацій)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.