시큐어 코딩(Secure Coding)

  • 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, 캡차등을 이용한다.