1. 웹 보안 개념
웹 보안의 중요성은 아무리 강조해도 부족함이 없다. 웹사이트는 정말이지 항상 보안 위협, 위험에 노출되기 쉽다. 웹 보안은 인터넷 네트워크 또는 웹을 통해 인터넷으로 전송되는 동안 데이터의 보안을 다루는 개념이다. 예를 들어, 클라이언트와 서버 간에 데이터를 전송하고 해당 데이터를 보호해야 하는 경우의 데이터 보안이 웹 보안인 것이다.
웹 사이트를 해킹하면 중요한 고객 데이터가 도난당할 수 있다. 그 데이터 중에는 신용카드 정보나 고객의 로그인 정보가 있을 수도 있고, 공격자가 그 웹사이트를 해킹하는 동안 비즈니스가 파괴되고, 불법 콘텐츠가 사용자에게 전파될 수도 있다. 고객의 중요한 정보를 훔치거나 웹 사이트를 통해 사용자에게 불법 콘텐츠를 전파할 수도 있으므로 웹 보안 측면에서 보안 고려 사항이 반드시 필요하다.
2. 웹 보안 위협
위협은 정보 시스템을 손상시키고 엄청난 피해를 끼칠 수 있다. 보안 위협은 컴퓨터 시스템 및 조직에 잠재적으로 해를 끼칠 수 있는 위험으로 정의할 수 있다. 최초로 웹 사이트를 제작한 상태만 본다면, 그 웹 사이트를 이용하는 개인이나 조직은 보안 공격에 취약할 수밖에 없다. 말 그대로 무방비인 상태이기 때문이다.
보안 공격은 주로 개인 정보 및 기밀 정보를 변경하거나 파괴하고, 드라이브 공간을 훔치고, 비밀번호에 불법적으로 액세스하는 것을 목표로 한다. 따라서 우리가 만든 웹 사이트가 보안 공격에 취약하다는 것을 알아채면 공격자는 사용자의 데이터를 훔치고 데이터를 변경하고 개인 정보를 파괴하여 기밀 정보를 확인하고 비밀번호에 액세스하게 된다. 그래서 웹 사이트 제작 단계에서부터 보안에 대비하는 것은 필수라고 할 수 있다.
3. 주요 웹 보안 위협
웹 보안 위협은 지속적으로 출현하고 진화하고 있지만, 그래도 많은 위협이 지속적으로 웹 보안 위협 목록의 최상위에 나타나고 있다. 아래의 리스트가 그 단골이라고 할 수 있겠다.
① XSS ② SQL Injection ③ 피싱 ④ 랜섬웨어 ⑤ 코드 삽입 ⑥ 바이러스와 웜 ⑦ 스파이웨어 ⑧ DoS
따라서 적어도 사이트를 제작 및 운영하고 있다면, 적어도 이 8가지에 대해서는 기본적으로 대비가 되어 있어야 한다는 것이다.
4. 보안 고려사항
① 소프트웨어 업데이트: 소프트웨어를 항상 업데이트해야 하는 것을 고려해야 한다. 여기서 '고려'라는 표현을 쓴 것은 각 조직의 환경에 따라 소프트웨어 업데이트가 항상 이득은 되는 것은 아니기 때문이다. 매번 담당자들은 소프트웨어 업데이트를 우선순위로 두되, 그렇게 업데이트를 할 경우에 득실에 대해 판단해야 한다. 물론 보통은 업데이트를 항상 재깍재깍 하는 것이 정답일 테지만 말이다. 공격자들은 특정 소프트웨어의 취약점을 알고 있는 경우가 많으며, 이는 때때로 버그로 인해 발생하며 컴퓨터 시스템을 손상시키고 개인 데이터를 도용하는 데 사용될 수 있다. 이전 버전의 소프트웨어는 해커가 네트워크에 침입하는 게이트웨이가 될 수 있을 것이다. 그리고 소프트웨어 공급업체는 곧 이러한 취약점을 인식하고 취약하거나 노출된 영역을 수정할 것이다. 그렇기 때문에 소프트웨어를 최신 상태로 유지하는 것이 중요해지는 것이다.
② SQL Injection 주의: SQL Injection은 쿼리에 대략적인 코드를 삽입하여 데이터나 데이터베이스를 조작하려는 시도이다. 예를 들어, 공격자가 우리의 웹 사이트에 쿼리를 보낼 수 있으며, 이 쿼리는 실행되는 동안 대략적인 코드가 될 수 있다. 테이블 변경, 데이터 수정 또는 삭제와 같은 데이터베이스를 조작하는 데 사용될 수 있거나 중요한 정보를 검색할 수도 있을 것이다. 그렇기에 항상 SQL 삽입에 대해 주의하여야 한다.
③ XSS: XSS를 통해 공격자는 웹 페이지에 클라이언트 측 스크립트를 삽입할 수 있다. 예를 들면, 양식 제출 같은 것이 있다. XSS는 공격자가 웹 사이트를 통해 다른 사용자의 브라우저에 클라이언트 측 스크립트를 주입할 수 있는 공격 클래스를 설명하는 데 사용되는 용어이다. 주입된 코드가 사이트에서 브라우저로 들어갈 때 코드는 신뢰할 수 있으며, 사용자의 사이트 권한 쿠키를 공격자에게 보내는 것과 같은 작업을 수행할 수 있다.
④ 오류 메시지: 사용자가 웹 사이트에 액세스하는 동안 사용자에게 정보를 제공하기 위해 발생하는 오류 메시지에 대해 매우 주의해야 하며, 일부 오류 메시지는 이런 저런 이유로 인해 발생하므로 사용자에게 정보를 제공할 때 매우 주의해야 한다. 예를 들어, 로그인 시도가 있는데, 사용자가 로그인하지 못한 경우 오류 메시지는 사용자 이름 또는 비밀번호 중 어느 필드가 잘못된지 사용자에게 알리지 않아야 할 것이다.
⑤ 데이터 유효성 검사: 데이터 유효성 검사는 사용자나 응용 프로그램이 제공한 입력을 제대로 테스트하는 것이다. 부적절하게 생성된 데이터가 정보 시스템에 들어가는 것을 방지한다. 데이터 유효성 검사는 서버 측과 클라이언트 측 모두에서 수행되어야 한다. 만약 우리가 양쪽에서 데이터 유효성 검사를 수행한다면 우리에게 인증을 줄 것이다. 데이터 유효성 검사는 외부로부터 데이터를 받았을 때, 특히 데이터가 신뢰할 수 없는 소스로부터 온 것일 때 이루어져야 한다.
⑥ 비밀번호: 비밀번호는 우리의 기기와 개인정보에 대한 무단 접근에 대한 첫 번째 방어선을 제공하는 것이라 할 수 있다. 그렇기에 강력한 비밀번호를 사용하는 것이 필수적이다. 많은 경우 공격자들은 비밀번호를 해독하기 위해 단순한 컴퓨팅을 사용하는 소프트웨어를 사용한다. 비밀번호는 단순한 컴퓨팅으로부터 보호하기 위해 복잡성을 높여야 한다. 흔히 이것에 대해 인터넷에 검색해 보면, 대문자, 소문자, 특수문자 및 숫자를 포함하여 최소 8자 길이의 비밀번호 요구사항을 시행하는 것이 좋다고는 한다. 그런데 그것도 결국 옛말이다. 단순한 컴퓨팅의 수준조차 날이 갈수록 발전하고 있으며, 개인적으로는 대문자, 소문자, 특수문자, 숫자의 4종류를 조합하여 최소한 12자리 이상으로 하는 것이 필요하다고 생각한다.
'보안 > 개념' 카테고리의 다른 글
CSRF(Cross Site Request Forgery) 총정리 (0) | 2024.02.07 |
---|---|
XSS(Cross Site Scripting) 총정리 (1) | 2024.02.07 |
SET(Secure Electronic Transaction) 총정리 (1) | 2024.02.03 |
비즈니스 영향 분석(BIA) 총정리 (0) | 2024.02.01 |
리눅스 배포판 정리 (0) | 2024.01.31 |