클라이언트를 믿지 말자.
프로그램은 기본적으로 조건과 상황에 따른 판단과, 결정으로 이루어진다. 네트워크 프로그램은 클라이언트와 상호 작용하기 마련인데, 처음 서버 프로그램을 작성할 때 할 수 있는 실수는 클라이언트를 너무 쉽게 믿어버린 다는 것이다. 클라이언트가 이 약속을 안지키면 어떻게 할 것인가? 클라이언트에 버그가 있다면 어떻게 할 것인가? 정상적인 클라이언트를 이용하지 않는다면 어떻게 할 것인가?? 서버는 반드시 방어적으로 동작해야 한다. 클라이언트가 잘못된 요청을 하더라도, 서버는 그 요청을 무시하거나, 잘못된 요청이라는 것을 알려주는 것에 그쳐야지 서버에 예외 또는 버그가 발생해선 절대 안된다. 다음은 직접 경험했던 상황들의 예이다. 직접 작성한 코드와, 유지 보수하던 코드에서 발생한 문제가 뒤섞여있지만, 클라이언트..
Software Engineering/Knowhow
2008. 1. 14. 13:23
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 엘키
- 게임데브포에버
- perfmon
- 디자인 패턴
- RoR
- SDL
- svn
- CppSQLite
- 루비 온 레일즈
- SQLite Spy
- 디버깅
- c언어
- ftp
- TDD
- EzShortcut
- EasyExec
- Rails
- 조엘 온 소프트웨어
- 임백준
- ruby
- Ruby on Rails
- 바로가기 프로그램
- NDC2013
- 리버스 엔지니어링
- TraceRoute
- 멀티스레드
- 좋은 프로그래머
- MS-SQL
- 게임개발포에버
- 루비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함