SQL 인젝션 공격은 코드의 취약점 이용해서 SQL 쿼리에 코드를 삽입하는 방식으로 공격하는 해킹 수법.
SQL 인젝션 막는 가장 쉬운 방법은 Prepared Statement를 사용하는 것이다. Prepared Statement를 쓰면 값에 포함된 특수 문자를 알맞게 변환해서 SQL 만들어준다.
SQL 인젝션 외에도 서버 프로그램 개발시 신경써야될 항목들
- 입력 값 검증
- 클라가 전송한 값이 옳다 가정말고 모든 값을 검증해야한다. 필수 여부, 길이 제한, 미허용 값등을 체크
- 개인 정보/민감 정보 암호화
- 로그인 암호와 바이오 정보처럼 인증에 쓰는 거 뿐만 아니라 주민 번호, 운전 면허 번호같은거도 암호화
- 에러 메시지에 시스템 정보 미노출
- 에러 메시지에 내부 IP나 DB IP 같은 시스템 정보가 노출되지 않도록 한다
- 보안 통신
- HTTPS 처럼 데이터를 암호화 해서 데이터 유출 방지한다.
- CORS(Cross Origin Resource Sharing) 설정
- 허용된 도메인만 서버 자원에 접근할 수 있도록 제한
- CSRF(Cross-Site Request Forgery) 대응
- 주요 기능은 타 사이트에서 위조 공격이 들어오는거 방지 위해 CSRF 토큰, SameSite Cookie, 캡차등을 이용한다.