Ruby on Rails

Bảo mật Rails

Bảo vệ CSRF, SQL injection, XSS, mass assignment, quản lý secrets, HTTPS

22 câu hỏi phỏng vấn·
Senior
1

Rails sử dụng cơ chế nào theo mặc định để bảo vệ chống lại các cuộc tấn công CSRF?

Câu trả lời

Rails tạo một CSRF token duy nhất cho mỗi phiên và tự động đưa vào form thông qua một field hidden. Token này được xác minh ở phía server cho mỗi request không phải GET. Helper form_with tự động chèn token này, và protect_from_forgery được bật theo mặc định trong ApplicationController.

2

Làm thế nào để vô hiệu hóa bảo vệ CSRF cho một action cụ thể trong API controller?

Câu trả lời

Phương thức skip_before_action :verify_authenticity_token vô hiệu hóa việc xác minh CSRF cho các action cụ thể. Điều này phổ biến với các API sử dụng xác thực dựa trên token (JWT, API key) thay vì session. Nên giới hạn ngoại lệ này chỉ cho những action thực sự cần thiết bằng tùy chọn only.

3

Lỗ hổng nào bị khai thác trong đoạn code này: User.where("name = '#{params[:name]}'")?

Câu trả lời

Việc nội suy trực tiếp params vào câu truy vấn SQL cho phép SQL injection. Kẻ tấn công có thể gửi name="'; DROP TABLE users; --" để thực thi mã SQL tùy ý. Thay vào đó hãy dùng placeholder của ActiveRecord: User.where(name: params[:name]) hoặc User.where("name = ?", params[:name]).

4

Phương thức ActiveRecord nào tự động bảo vệ chống lại SQL injection?

5

Rails tự động bảo vệ chống lại các cuộc tấn công XSS trong view ERB như thế nào?

+19 câu hỏi phỏng vấn

Nắm vững Ruby on Rails cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí