우리(그리고 모든 사람)는 디지털 비즈니스의 지속적인 성공을 위해 성과가 얼마나 중요한지 알고 있습니다. 다이얼업 연결과 몇 시간씩 걸리는 다운로드에 젖어 자란 사람들은 성능에 대해 좀 더 관대한 경향이 있지만, 디지털 네이티브인 우리 자녀들은 그렇게 관대하지 않습니다. 그들은 즉각적인 응답과 빠른 다운로드를 기대합니다.
우리의 참을성 부족은 숫자로 증명됩니다. 성능이 좋지 않아 애플리케이션을 삭제한 사람이 80%가 넘습니다 . 우리 중 일부(10명 중 3명)는 앱의 번개같이 빠른 속도 덕분에 비용을 지불할 의향이 있습니다.
하지만 우리는 어떤 기술 세대에 속하든 기쁘게 하기 힘든 사람들입니다. 앱 속도를 높이는 동안 보안을 무시해서는 안 됩니다. 그렇다면, 당사의 데이터가 침해되었을 때, 당사는 단순히 귀하의 앱을 삭제하는 것 이상의 조치를 취할 것입니다.
따라서 성능에 대한 요구와 보안에 대한 필요성 사이에서 균형을 맞추는 일은 IT 전문가, 특히 보안을 담당하는 전문가의 몫입니다. 앱은 빠르고 안전해야 합니다.
절반 이상의 조직이 앱을 더 안전하게 만드는 방법 중 하나는 다른 애플리케이션 서비스와 함께 웹 애플리케이션 방화벽 (WAF)을 사용하여 애플리케이션을 공격으로부터 보호하는 것입니다. 그들은 두 가지 방법으로 이를 수행합니다.
먼저, 인바운드 요청을 스캔하여 악의적인 활동을 감지합니다. 두 번째로, 아웃바운드 응답을 검사합니다. 이러한 보안 전략을 항상 적용하는 조직이 애플리케이션 공격을 견뎌낼 수 있는 자신감이 가장 크다는 것은 놀라운 일이 아닙니다.
WAF를 사용하면 요청과 응답의 모든 부분을 검사할 수 있습니다. 원하는 대로 콘텐츠를 분석하고, 분리하고, 왜곡하고, 수정할 수 있습니다.
하지만 할 수 있다고 해서 해야 하는 것은 아닙니다.
보안은 무료가 아닙니다. 공격이나 침해 증거를 찾는 데 필요한 수준의 주의력을 가지고 애플리케이션 트래픽을 검사하려면 CPU 사이클과 메모리가 필요합니다.
그렇기 때문에 보안과 성능의 균형을 맞추는 것이 중요합니다. 스캐닝이나 스크러빙에 소비하는 마이크로초가 늘어날수록 사용자는 응답을 기다릴 필요가 늘어납니다.
그리고 그것들이 합쳐집니다.
결국 패킷이 네트워크를 통과하고 돌아오는 데는 수 마이크로초가 걸린다는 것은 물리학적인 문제입니다. 연결을 설정하는 데 몇 마이크로초가 더 걸립니다. 처리해야 할 것이 몇 가지 더 있습니다... 이해하시겠죠. 무엇을 하든 시간이 걸리고, 시간을 많이 들일수록 사용자는 점점 더 참을성을 잃게 됩니다.
일부 사람들은 이 갈등에 대해 전통적으로 아기와 목욕물을 함께 버리는 관행을 고수해 왔습니다. 성능이 만족스럽지 않을 때까지 보안 기능을 해제합니다. 하지만 그것은 옳은 대답이 아닙니다. 보안에 대한 필요성과 성과에 대한 요구를 모두 만족시킬 수 있는 균형이 필요합니다.
요청 시 프로토콜 수준의 구문 분석 및 검증을 자유롭게 수행하세요. 탑재물을 검사하고 공격의 징후가 있는지 찾아보세요. 먼저 서명 기반 스캔을 실시하고, 그 다음에 텍스트 기반 비교를 실시합니다. 가능하면 서명 기반 스캔을 사용하면 분석하고 비교할 필요가 없으므로 보안 성능이 향상됩니다. 그냥 직접적인 비교일 뿐이며, 매우 빠른 과정입니다.
응답에 있어서 내용을 분석하고 면밀히 살펴보려는 유혹에 굴복하지 마십시오. 이 경우 개발자는 JSON이 올바르게 형식화되었거나 XML이 적절한 스키마를 따른다는 것에 대해 일정 수준의 신뢰가 있어야 합니다. 사실, 여기에 프로토콜이나 형식 오류가 있으면 사용자가 그것을 알게 될 것입니다. 그건 개발자의 우려사항이고 일반적으로 보안 위험은 아닙니다.
보안 위험은 민감한 데이터(신용 카드나 계좌 번호, 주민등록번호, 이메일 주소 등)를 포함하는 것입니다. 데이터 속에서 쉽게 스캔하여 가려낼 수 있는, 잘 정의된 패턴을 가진 숫자와 데이터입니다. 서명 기반 스캔과 마찬가지로 여기서도 패턴 매칭을 수행하고 있으며 보안 서비스에서는 이를 최대한 빨리 수행하는 데 매우 능숙해졌습니다.
콘텐츠 길이도 가능하다면 확인하고 싶은 사항입니다. 반환된 콘텐츠의 양만으로도 몇몇 눈에 띄는 악용 사례를 식별할 수 있었습니다. 특정 요청이 약 1K의 데이터만 반환해야 하는 경우 4K 응답은 어딘가에서 경고음을 울릴 것입니다. 데이터 레코드를 구문 분석하고 계산하는 것보다 훨씬 시간이 덜 걸리는 간단한 검사입니다.
경험에 따르면, 요청에 대해 항상 보안 규칙 0을 준수하고 사용자 입력이 있을 때 가능한 모든 것을 확인하는 것이 좋습니다. 아웃바운드에서는 진행 중인 침해의 지표를 찾고 민감한 데이터를 난독화하지만 데이터 형식과 스키마 준수에 대해 걱정하는 데 시간을 허비하지 마세요. 개발자가 응답 형식을 올바르게 지정했는지 걱정하게 두세요. 그건 그들의 관점이지 당신의 관점이 아닙니다.
보안과 성능은 균형을 이룰 수 있지만, 둘 중 하나를 희생해서는 안 됩니다. 그리고 이는 양방향으로 적용됩니다. 성능을 위해 보안을 포기하지 마십시오. 그러나 (잠재적으로 불필요한) 보안을 위해 성능을 폄하하지 마십시오.
보안을 전략적으로 사용하여 악용을 방지하고 침해를 탐지하면 사용자를 만족시키고 데이터와 애플리케이션을 안전하게 보호하는 데 필요한 성능과의 균형을 달성할 수 있습니다.