Ruby on Rails

Bezpieczeństwo Rails

Ochrona CSRF, SQL injection, XSS, mass assignment, zarządzanie secrets, HTTPS

22 pytań z rozmów·
Senior
1

Jaki mechanizm Rails domyślnie wykorzystuje do ochrony przed atakami CSRF?

Odpowiedź

Rails generuje unikalny token CSRF na sesję i automatycznie umieszcza go w formularzach poprzez pole hidden. Token ten jest weryfikowany po stronie serwera dla każdego żądania innego niż GET. Helper form_with automatycznie wstawia ten token, a protect_from_forgery jest domyślnie włączone w ApplicationController.

2

Jak wyłączyć ochronę CSRF dla konkretnej akcji w controllerze API?

Odpowiedź

Metoda skip_before_action :verify_authenticity_token wyłącza weryfikację CSRF dla konkretnych akcji. Jest to powszechne w API używających uwierzytelniania opartego na token (JWT, API key) zamiast sesji. Zaleca się ograniczenie tego wyjątku do ściśle niezbędnych akcji za pomocą opcji only.

3

Jaka podatność jest wykorzystywana w tym kodzie: User.where("name = '#{params[:name]}'")?

Odpowiedź

Bezpośrednia interpolacja params w zapytaniu SQL umożliwia SQL injection. Atakujący może wysłać name="'; DROP TABLE users; --", aby wykonać dowolny kod SQL. Zamiast tego należy używać placeholderów ActiveRecord: User.where(name: params[:name]) lub User.where("name = ?", params[:name]).

4

Która metoda ActiveRecord automatycznie chroni przed SQL injection?

5

W jaki sposób Rails automatycznie chroni przed atakami XSS w widokach ERB?

+19 pytań z rozmów

Opanuj Ruby on Rails na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo