Ruby on Rails

Rails 보안

CSRF 보호, SQL 인젝션, XSS, mass assignment, secrets 관리, HTTPS

22 면접 질문·
Senior
1

Rails가 CSRF 공격을 방어하기 위해 기본적으로 사용하는 메커니즘은 무엇입니까?

답변

Rails는 세션마다 고유한 CSRF 토큰을 생성하고 hidden 필드를 통해 폼에 자동으로 포함시킵니다. 이 토큰은 GET이 아닌 모든 요청에 대해 서버 측에서 검증됩니다. form_with 헬퍼가 이 토큰을 자동으로 삽입하며, protect_from_forgery는 ApplicationController에서 기본적으로 활성화되어 있습니다.

2

API controller의 특정 action에서 CSRF 보호를 비활성화하려면 어떻게 해야 하나요?

답변

skip_before_action :verify_authenticity_token 메서드는 특정 action에서 CSRF 검증을 비활성화합니다. 이는 session 대신 token 기반 인증(JWT, API key)을 사용하는 API에서 일반적입니다. only 옵션을 사용하여 이 예외를 꼭 필요한 action에만 한정하는 것이 권장됩니다.

3

이 코드에서 악용되는 취약점은 무엇인가요: User.where("name = '#{params[:name]}'")?

답변

SQL 쿼리에 params를 직접 보간하면 SQL injection이 가능해집니다. 공격자는 name="'; DROP TABLE users; --" 를 보내 임의의 SQL 코드를 실행할 수 있습니다. 대신 ActiveRecord의 placeholder를 사용하세요: User.where(name: params[:name]) 또는 User.where("name = ?", params[:name]).

4

SQL injection으로부터 자동으로 보호하는 ActiveRecord 메서드는 무엇인가요?

5

Rails는 ERB 뷰에서 XSS 공격으로부터 어떻게 자동으로 보호하나요?

+19 면접 질문

다음 면접을 위해 Ruby on Rails을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기