방화벽과 관련하여 해결되지 않은 가장 큰 기술적인 문제는 애플릿과 다운로드 가능한 프로그램들이다. 자바나 ActiveX와 같은 애플릿은 네트워크 수준의 능력을 포함하고 있어, 충분히 방화벽은 보통 단방향 거울 효과(one-way mirror effect)를 갖고 있기 때문에, 상대적으로 외부로 나가는 연결을 쉽게 허가할 수 있다. 예를 들면, 방화벽 관리자들은 누군가가 자바나 ActiveX 애플릿을 개발했을 때 방화벽을 통해서 외부와 연결을 설정하거나 악의적인 해커가 통제하는 외부 시스템과 연결되어 사용자 데스크탑의 명령 인터프리터를 사용하게 될 것을 우려한다. 결론은 전체적인 방화벽 모델이 위협받게 된다는 것이다. 내부로부터의 연결은 외부에서의 연결만큼이나 위협적인 요소이고, 대부분의 방화벽이 내부 사용자들은 방화벽을 공격하지 않을 것이라는 가정 하에서 설계되었기 때문에 자바나 ActiveX 애플릿은 내부에서 방화벽에 대한 공격이 완전하게 자동적으로 실행되도록 할 수도 있다.
어떤 사이트가 적응 네트워크 계층의 방화벽에 의해 보호되고 있고 방화벽으로 보호된 내부 네트워크 사용자들이 위험한 URL을 클릭 하였다고 가정해 보자. 일반적인 FTP 연결을 설정하는 대신에, 그 URL에서 방화벽을 통해 FTP 명령이 전달되도록 하는 자바 애플릿이 시작되고, 목표 시스템의 Telent 서비스 포트에 콜백 연결을 일으키는데 필요한 코드를 전달한다. 이때 방화벽은 통과하는 명령들을 충실하게 조사하여 콜백 연결을 허가하고, 이를 통해 실제로 공격자가 침투해 들어올 수 있는 구멍이 만들어지게 된다. 일반적으로 이러한 공격은 피해자의 네트워크와 방화벽 형태에 대해서 공격자가 고도의 지식을 가지고 있을 때만 실현 가능하다. 그러나 실제로 이러한 공격이 가능하도록 구현하는데 필요한 것은 시간뿐이며, 일단 개발된 후에는 더욱 널리 이용될 것이다.
방화벽을 공급하는 벤더들은 그들의 방화벽에서 FTP 서비스를 제어하는 방식을 개선함으로써 이에 대처하고 있지만 이와 유사한 문제점이 존재한다는 것은 확실하다. 일반적으로, 방화벽 설계자들에게 다운로드 가능한 실행 코드 문제는 상당히 어려운 문제이다. 웹 출현 이전에, 방화벽 설계작들은 자신들의 보안 시스템들을 관통할 수 있는 트로이 목마 프로그램에 대해 걱정하였으마 웹 출현으로 트로이 목마를 다운로드받는 것은 단지 한번의 마우스 클릭으로 이루어질 수 있고(1991년에 어떤 사이트는 전자메일을 이용하고, 방화벽의 존재를 알고 있었다. 이때 공격자로의 채널을 확보하기 위한 출구를 찾아 돌아다니는 공격 프로그램에 의해 공격당했으며 이것은 성공하였다.) 웹브라우저 플러그인과 다소 색다른 웹 모듈이 또 다른 공격 방법이 되었다. 조만간 해커들은 내부에서 방화벽을 공격할 수 있는 플러그인의 개선된 버전을 내놓을 지 모른다. 효율성 면에서 플러그인들은 각각의 프로그램이기 때문에 이러한 플러그인은 브라우저의 외부 보안 모델을 작동한다. 결국, 사용자는 실행되는 모든 것의 출저를 요구하는 환경에 직면하고 있으며 이것은 방화벽과 웹의 영역을 벗어나는 '신뢰적인 소프트웨어 배포'라는 매우 크고 어려운 기술적 문제일 뿐이다. 그러므로, 여기서는 방화벽이 자바나 ActiveX에 의한 기본적 공격을 어떻게 막을 수 있는가에 대해 알아보는 정도가 적당하리라 본다.
--- p.245~246
넷스케이프와 인터넷 익스플로러는 클라이언트의 시스템에 쿠키를 저장하도록 할 수 있다. 쿠키는 속성과 값의 쌍으로 이루어진 집합체이다. 서버는 HTTP 응답 메시지 헤더에 이를 추가할 수 있다. 클라이언트는 쿠키라고 불리는 파일에 이 속성값들을 저장하고 클라이언트가 URL로 요구하였을 때, 브라우저는 위치에 응답할 저장된 쿠키가 있는지를 쿠키 파일에서 검사한다. 쿠키를 찾으면 쿠키는 클라이언트 요청의 응답으로 보내어지고 쿠키는 서버를 위하여 클라이언트에 관련된 정보를 나타낸다. 그러므로 유용한 적용을 할 수 있도록 한다.
예를 들면, 사용자는 서버와 상호 작용을 설정할 수 있다. 사용자는 그들이 보고싶은 메뉴의 유형, 주문 리스트에 대한 호감 표현 및 인기 사이트 등을 선택할 수 있고 서버는 클라이언트 시스템에 이 정보들을 쿠키로 저장시킬 수 있다. 그리고 사용자들이 서버를 방문할 때마다 쿠키 정보가 전송된다. 서버는 이 정보를 클라인트로 다운로드될 컨텐츠를 결정하는 자료로 사용할 수 있다. 서버측보다는 클라이언트측에 쿠키를 저장함으로써 정보를 분산시키고 서버의 부하를 감소시키기 때문에 접속 가능성이 증가한다. 쿠키 없이 동일한 기능을 제공하려면 서버는 모든 방문자의 데이터베이스를 관리하고 접속 요청이 있을 때마다 검색을 실시해야 하지만 이러한 접근 방식은 모든 서비스 제공자들에게 무의미하다.
쿠키의 크기는 보통 4K로 한정된다. 서버가 추가적인 정보를 저장하기를 원한다면, 서버에서 관리하고 있는 데이터베이스의 인덱스를 쿠키에 저장할 수 있을 것이다. 클라이언트가 URL로 요구하면 쿠키 정보가 전송되고, 서버는 쿠키 정보를 사용해서 데이터베이스에서 사용자 프로파일을 신속히 검색할 수 있다.
쿠키는 광고회사가 원하는 상품을 광고하고자 할 때 주로 사용된다. 물론 쿠키가 프라이버시에 대한 우려를 증가시킴에도 불구하고 쿠키 사용을 막을 방법은 아직 없다. 사용자들이 할 수 있는 최선의 방안은 쿠키가 생성되기 전에 경고 메시지를 팝업 윈도우를 통해 제시하하는 것이다. 그러면 사용자는 팝업 윈도우 화면으로 메시지를 제공받고 쿠키를 저장할 것인지를 선택할 수 있다.
쿠키 사용은 번거로운 일일 뿐 아니라 사이트 방문시에 심각한 문제를 일으키기도 하므로 사이트가 자주 다중 쿠키를 요구하는 것은 당연하다. 어떤 사이트는 쿠키를 너무 많이 요구해서 사용자가 경고창과 함께 사이트에 접속하는 유일한 방법은 계속 'OK', 또는 'CANCEL'이라는 문구를 선택해야 한다. 극단적인 경우, 쿠키를 수용할 것인지 선택하는 것이 일상적인 것이 되도록 하고 있다. 결국 쿠키를 허용하는 것이 일반화되고 이에 따라 쿠키 내에 스크립트를 쓰는 것을 막는 방법은 지속적으로 쿠키 파일을 모니터하고 삭제해주는 것이지만 일반 사용자들은 이러한 번거로운 수고를 감수하지 않을 것이다. 편리한 방법으로 유닉스 시스템에서는 브라우저가 쿠키 파일을 수정하지 못하도록 하기 위하여 쿠키 파일의 접근 모드를 변경한다. 물론 브라우저도 사용자와 동일한 접근 모드를 가질 수 있기 때문에 사용자도 쿠키 파일을 직접 수정할 때 먼저 접근 모드를 수정해야 한다.
--- p.81~82