누군가 '보안'이라고 말하면 어떤 이미지가 떠오르나요?
해커? 공격? 방어? 어두운 방에서 검은색 후드 티셔츠를 입은 프로그래머
'보안'이라는 단어를 떠올리면 보통 나쁜 소식의 맥락에서 떠올리게 됩니다. '대규모 소셜 네트워크에서 로그인 비밀번호가 유출됨' 또는 '공격자가 쇼핑 사이트에서 신용카드 정보를 도용함'과 같은 헤드라인을 자주 접하게 됩니다.
하지만 보안은 '사용자 환경'이나 '접근성'과 마찬가지로 웹 개발의 긍정적이고 필수적인 부분으로 간주되어야 합니다.

다음 몇 가지 가이드에서는 비즈니스와 사용자의 콘텐츠를 안전하게 보호하는 방법을 알아봅니다.
보안 취약점이란 무엇인가요?
소프트웨어 개발에서 애플리케이션이 의도한 대로 작동하지 않으면 '버그'라고 합니다. 버그로 인해 잘못된 정보가 표시되거나 특정 작업에서 비정상 종료되는 경우가 있습니다. 취약점(보안 버그라고도 함)은 악용에 사용될 수 있는 버그 유형입니다.
버그는 개발자의 일상적인 활동에서 흔히 발생합니다. 즉, 취약점도 애플리케이션에 자주 도입됩니다. 중요한 것은 일반적인 취약점을 인지하여 최대한 완화하는 것입니다. 일반적인 패턴과 기법을 따라 다른 버그를 최소화하는 것과 마찬가지입니다.
대부분의 보안 기법은 좋은 프로그래밍에 불과합니다. 예를 들면 다음과 같습니다. - 사용자가 입력한 값을 확인합니다 (null이 아니고 빈 문자열이 아니며 데이터 양을 확인함). - 한 명의 사용자가 너무 많은 시간을 소요하지 않도록 합니다. - 보안 버그가 실수로 유입되지 않도록 단위 테스트를 빌드합니다.
보안 기능이란 무엇인가요?
첫 번째 방어선은 HTTPS 및 CORS와 같은 보안 기능입니다. 이 약어에 대해서는 나중에 알아볼 예정이므로 지금은 걱정하지 마세요. 예를 들어 HTTPS를 사용하여 데이터를 암호화해도 버그가 수정되지는 않지만 사용자와 다른 당사자 간에 교환하는 데이터는 보호됩니다. 데이터 가로채기는 일반적인 공격입니다.
어떤 영향을 미치나요?
애플리케이션이 안전하지 않으면 다양한 사용자가 영향을 받을 수 있습니다.
사용자에게 미치는 영향 |
|
애플리케이션에 미치는 영향 |
|
다른 시스템에 미치는 영향 |
|
애플리케이션을 적극적으로 보호하는 것은 개발자와 비즈니스뿐만 아니라 사용자에게도 중요합니다. 이를 통해 사용자와 기타 시스템을 사이트에서 시작된 공격으로부터 보호할 수 있습니다.
마무리
축하합니다. 이 소개의 절반을 마쳤습니다. 이제 보안 취약점과 기능의 차이를 이해하고 애플리케이션이 안전하지 않으면 개발자뿐만 아니라 다른 모든 사용자에게도 영향을 미친다는 사실을 알게 되었습니다. 다음 가이드에서는 보안을 더 쉽게 이해할 수 있도록 공격 유형을 자세히 설명합니다.