Ілюстрація
SQL Injection
Ілюстрація
Ruby on Rails — чудовий фреймворк для створення веб-додатків. Він надає безліч чудових функцій, використовується багатьма організаціями, а мова є однією з найкращих для вивчення для нових розробників. Як би захоплююче не було стрибнути в програмування, створення програми не обходиться без певних ризиків. Як і всі мови програмування, Rails чутливий до різних вразливостей безпеки. OWASP (Open Web Application Security Project) регулярно оновлює список десяти найбільших уразливостей у програмуванні. У цій публікації я маю намір розглянути деякі з цих поширених уразливостей, про які, на мою думку, повинен знати новий розробник Rails, і надам деякі ресурси, як уникнути інших.
Ілюстрація
Завдяки тому, що Rails виконує велику частину роботи під капотом для нас, багато методів, доступних для запитів до бази даних, є безпечними. Однак можуть бути випадки, коли може знадобитися написати запит, який виходить за межі звичайних запитів. Коли такі моменти все-таки трапляються, важливо, щоб розробник був обережним, щоб переконатися, що він створює запит до своєї бази даних, щоб він був якомога вузьким і конкретним, щоб користувач, який робить запит, мав доступ лише до інформації, на яку він уповноважений. Rails надає веб-сайт, який може допомогти новим розробникам уникнути деяких з цих підводних каменів.

https://rails-sqli.org/
Ілюстрація
Sessions
Ілюстрація
Сесії — це фантастичний спосіб розшифрувати маркер автентифікації користувача та зберегти інформацію про нього, не змушуючи його входити на кожній сторінці або щоразу, коли він повертається до вашої веб-програми. Однак, хоча вони є більш безпечними, ніж традиційні файли cookie, вони не мають власного набору вразливостей. По-перше, в Rails термін дії сеансу не закінчується. Щоб пом’якшити це, найкраще було б реалізувати gem, як-от devise, який дозволить користувачам виходити з сеансу після закриття програми, або налаштувати вікно закінчення терміну дії. Нижче наведена документація для налаштування вікна закінчення сеансу. Знімок екрана з: https://guides.rubyonrails.org/security.html
Ілюстрація
Ілюстрація
Ілюстрація
По-друге, сеанс також може бути вразливим до різноманітних форм викрадення сеансу. Згідно з Вікіпедією, існує чотири основні методи, які використовуються для захоплення сеансу користувача: фіксація сеансу, підключення до сеансу, міжсайтові сценарії та зловмисне програмне забезпечення. Для отримання додаткової інформації перейдіть за посиланням: https://en.wikipedia.org/wiki/Session_hijacking
Ілюстрація
Gem Vulnerabilities

Ruby gems значно полегшують життя. Бібліотеки gem, такі як Twilio, bcrypt, bootstrap, rest-client та багато інших, можуть додати багато динамічних функцій до веб-додатків. Пошук нових може бути дуже захоплюючим. Однак вони не приходять без власних турбот. Оскільки Ruby є відкритим вихідним кодом, погані актори можуть скористатися перевагами різних бібліотек. У липні спільнота, відповідальна за підтримку Ruby Gems, видалила 18 шкідливих версій 11 бібліотек gem, одна з яких була клієнтською. Знімок екрана з www.zdnet.com/article/backdore-code-found-in-11-ruby-libraries/
Ілюстрація
Ілюстрація
Ілюстрація
Переконайтеся, що коли ви шукаєте нові або часто використовувані gems, які можна включити у свою програму, наразі немає жодних уразливостей, які зараз експлуатуються. Якщо є, і ви все одно хочете скористатися перевагами функціональних можливостей gems, переконайтеся, що ви використовуєте найбезпечнішу версію бібліотеки.
Ілюстрація
Конфіденційні файли
Ілюстрація
Оскільки багато веб-додатків розміщено на GitHub, більшість їхніх репозиторіїв можуть бути доступними та перегляданими іншими. Тому було б гарною ідеєю видалити ці конфіденційні файли, перш ніж надсилати їх на Github. OWASP пропонує список прикладів файлів для видалення. Знімок екрана взятий із https://cheatsheetseries.owasp.org/cheatsheets/Ruby_on_Rails_Cheatsheet.html
Ілюстрація
Ілюстрація
Ілюстрація
Ensuring Users are being Secure

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

Крім того, розгляньте можливість надання або посібника, або певної документації, щоб надати користувачам найкращі методи використання вашої програми (не використовуйте повторно паролі, не використовуйте звичайні паролі, не передавайте конфіденційні дані через невідомі мережі тощо). Жоден додаток не є на 100% захищеним, тому ми робимо все можливе, щоб наші користувачі робили все, щоб захистити себе так само, як ми робимо наші, щоб захистити їх.
Ілюстрація
Це лише кілька вразливостей, про які повинен знати будь-який розробник. І, на щастя, багатьма з них можна керувати шляхом налаштування належної аутентифікації, авторизації та надійних параметрів. Однак важливо, щоб ви або хтось із вашої команди були знайомі з цими вразливими місцями, щоб переконатися, що ви пом’якшуєте вразливості безпеки, а не створюєте їх.
Ілюстрація
Посилання на ресурси:
Ruby’s guidelines on handling security: https://guides.rubyonrails.org/security.html

Rails’ examples on how not to write sql queries: https://rails-sqli.org/

Resource on Common Vulnerability Exploits: https://www.cvedetails.com/vulnerability-list/vendor_id-12043/product_id-22568/Rubyonrails-Ruby-On-Rails.html

OWASP Ruby on Rails Vulnerability CheatSheet: https://www.owasp.org/index.php/Ruby_on_Rails_Cheatsheet

Посилання на оригінал статті: https://kmarks2013.medium.com/5-common-rails-security-vulnerabilities-58d39be9a270