이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요
방어적 프로그래밍에 대해서 생각은 하면서 왜 잘 안되는가에 대해서 고민해보는 문서
오픈나무는 심심하면
XSS escape를 빼먹어서
귀찮게 공지를 써야하는 상황이 발생한다
오늘도 공지를 쓰면서 이에 대해서 반성해보는 내용이다
그나마 다행인 점은 오픈나무는 세션 쿠키에 HttpOnly 옵션을 기본으로 사용한다
그리고
자동 로그인을 지원하지 않기 때문에 XSS 사건이 터져도 특정 사이트나 혐짤을 띄우는 것 말곤 공격자가 할 수 있는 일이 없다
근데 그건 그냥 위키 내용에 써도 테러 가능한 부분이니 사실상 할 수 있는 건 없다고 파악된다
그래서
최소한의 보안 조치는 이미 되어있기 때문에 보안 리포트라기 보단 그냥 이 문서는 한탄하는 문서다
4. 방어적 프로그래밍 ✎ ⊖
방어적 프로그래밍은 말하는 사람마다 엄밀한 정의가 전부 다르긴 하지만 일반적으로 예상하지 못한 입력에 대응하는 방법을 생각하면서 프로그래밍 하는 것이다
5. 왜 어려운가? ✎ ⊖
예상하지 못한 입력은 개발자도 사실 예상하기 어렵다 사실 코드를 다 작성하고 한번 더 코드 리뷰를 똑바로 해봐야 하는데... 그게 잘 안된다
결국 이 문제는 습관의 문제이기 때문에 그래서 더 어려운 것 같다
6. 해결 방법은 없는가? ✎ ⊖
- 테스트 케이스를 제대로 작성하고 그 테스트 케이스에 따라서 동작을 테스트 한다
이게 가장 현실적인 방법인데 문제는 테스트 케이스 고려할 때부터 예상하지 못한 입력을 빼먹으면 그건 또 뚫린다
이게 사실 가장 이상적인 방법이지만 오픈나무에 적용하기엔 개발 생산성을 너무 박살내버린다
문제는 위키 특성상 이건 안된다
- 2중으로 안전을 보장할 수 있는 장치를 만든다
위에서 말한 HttpOnly가 이미 그 역할을 잘 하고 있다
디시인사이드 같은 초대형 사이트도 그게 잘 안되서 맨날 털리는 걸 보면 이건 참 어려운 문제인 것 같다
가장 현실적인 방법은 테스트 케이스를 제대로 작성해서 테스트를 해야할 것 같다