Loading

Salesforce CRM 서비스 플랫폼 보안 FAQ

게시 일자: Jan 22, 2025
상세 설명


다음 설명서에서는 App Cloud 플랫폼에 대한 일반적인 보안 질문에 대한 답변을 제공합니다.

또한 App Cloud 플랫폼에 대한 타사 보안 평가의 일반적인 가양성 결과도 다룹니다.

 

솔루션

목차

 

 

보안 쿠키

salesforce.com 도메인에서 제공되는 특정 쿠키가 보안으로 설정되지 않거나 영구적으로 설정되지 않는 이유는 무엇인가요?
플랫폼에서 기능 향상을 위해 사용하는 쿠키 중에는 세션 정보를 포함하지 않는 쿠키가 몇 가지 있습니다. 공격자가 이러한 쿠키를 변경하거나 액세스하는 경우 이 쿠키는 액세스 권한을 얻거나 권한을 상승시키는 데 사용할 수 없습니다. 세션 쿠키 'sid'는 보안 쿠키로 표시되며 비영구적입니다. 즉, 사용자가 브라우저를 종료하면 쿠키가 삭제됩니다.

 

세션 쿠키에 HTTP Only 플래그가 설정되지 않은 이유는 무엇인가요?
Setup(설정) | Security Controls(보안 제어) | Session Settings(세션 설정) | Require HttpOnly attribute(HttpOnly 특성 필요)에서 조직의 HttpOnly 쿠키를 요청할 수 있습니다. 이렇게 하면 SID 세션 쿠키에 대해서만 HttpOnly 특성이 설정됩니다.

 

데이터 유효성 검사

개체에 저장하기 전에 특정 입력 필드의 데이터에 대해 서버 측에서 유효성 검사를 수행하지 않는 이유는 무엇인가요?
이와 같은 데이터 유효성 검사 또는 품질 문제는 보안에 해당하지 않습니다. 대부분의 기본 데이터 유효성 검사 또는 품질 규칙은 클라이언트 측에서 적용됩니다.

예를 들어 API를 통해 선택 목록 값을 정의되지 않은 값으로 업데이트하거나 표준 페이지 편집 POST를 수정하는 것 등이 있습니다.

서버 측에서 적용되는 데이터 유효성 검사 규칙의 예시는 다음과 같습니다.

  • 조회 ID를 존재하지 않는 레코드 ID로 설정하는 경우.
  • 필드의 데이터 유형(예: 텍스트 값으로 숫자 필드를 설정할 수 없음).
  • 개체 유효성 검사 규칙 또는 Apex 트리거에서 명시적 데이터 유효성 검사 규칙 설정.

 

클릭재킹

플랫폼에 클릭재킹 방지 기능이 있나요?
클릭재킹 방지는 Setup(설정) | Security Controls(보안 제어) | Session Settings(세션 설정)를 통해 활성화할 수 있습니다. 이 기능은 모든 Salesforce 설정 페이지에서 기본적으로 활성화되어 있습니다.

사이트의 클릭재킹 방지 기능은 다음 수준 중 하나로 설정할 수 있습니다.

  • 모든 페이지에 의한 프레이밍 허용(보호 없음)
  • 동일한 출처에 의한 프레이밍만 허용(권장)
  • 모든 페이지에 의한 프레이밍 허용 안 함(가장 강력한 보호)


Salesforce 커뮤니티에는 두 가지 클릭재킹 방지 솔루션이 있습니다.

  • Force.com 커뮤니티 사이트 - Force.com 사이트 세부 정보 페이지에서 설정합니다.
  • Site.com 커뮤니티 사이트 - Site.com 구성 페이지에서 설정합니다. 둘 다 같은 값으로 설정하는 것이 좋습니다.


자세한 내용은 클릭재킹 방지 활성화 설명서를 참조하세요.

 

크로스 사이트 요청 위조

플랫폼에 크로스 사이트 요청 위조 보호 기능이 있나요?
CSRF 보호는 기본적으로 활성화되어 있습니다. Setup(설정) | Security Controls(보안 제어) | Session Settings(세션 설정)를 통해 설정을 보거나 수정할 수 있습니다.

 

Salesforce CSRF 토큰이 재사용되는 이유는 무엇인가요?
CSRF 토큰은 특정 사용자, 작동 기반이 되는 엔터티 및 세션으로 범위가 지정되며 사용자 세션 내에서 재사용됩니다.

토큰 자체는 공격자가 추측할 수 없도록 무작위로 생성됩니다. 공격자가 사용자의 sessionid를 얻는 것은 CSRF 토큰을 얻는 것만큼이나 어렵습니다.

 

크로스 사이트 스크립팅

플랫폼에 크로스 사이트 스크립팅 보호 기능이 있나요?
모든 표준 페이지 출력은 사용자 제어 데이터를 적절한 사용 컨텍스트에 맞게 인코딩합니다. VisualForce 페이지의 경우 모든 병합 필드는 기본적으로 HTML로 인코딩됩니다.

사용자 지정 VisualForce 페이지에서 발생하는 모든 크로스 사이트 스크립팅 취약점은 개발자를 위해 제공되는 모범 사례 권장 사항 및 도구를 사용하여 해결해야 합니다.

Apex 및 VisualForce는 다른 컨텍스트를 위한 추가 인코딩 유틸리티를 제공합니다. 개발자는 HTML이 아닌 다른 컨텍스트의 적절한 출력 인코딩에 대한 책임을 집니다.

자세한 내용은 Apex 및 VisualForce XSS 가이드라인 설명서를 참조하세요.


데이터가 개체에 저장될 때 XSS로부터 보호하기 위해 입력 데이터를 인코딩하지 않는 이유는 무엇인가요?
플랫폼은 사용자 제어 데이터에 대한 컨텍스트별 출력 인코딩을 구현합니다. Salesforce 데이터는 다양한 컨텍스트와 시스템에서 제공될 수 있으며, 입력 시점에 데이터의 올바른 컨텍스트를 정확히 예측하기는 어렵습니다.

표준 페이지는 데이터가 표시되는 적절한 컨텍스트에서 데이터를 올바르게 인코딩하도록 설계되었습니다. 입력 인코딩이 필요한 경우 원하는 개체 또는 필드에 사용자 지정 트리거를 구현하여 입력 인코딩을 수행하세요.

 

파일 업로드

악의적인 사용자가 업로드한 파일에는 악성 콘텐츠가 포함될 수 있으며, 바이러스 백신 소프트웨어가 해당 파일을 악성 파일로 감지하지 못할 경우 파일을 다운로드하는 사용자가 피해를 입을 수 있습니다.

Salesforce에서 업로드 및 다운로드한 파일을 검사하여 엔드포인트 보안을 강화하고자 하는 고객은 Salesforce AppExchange에 있는 타사 검사 제품을 활용하면 됩니다. 

특정 파일 유형 및 업로드 또는 다운로드 동작은 Setup(설정) | Security Controls(보안 제어) | File Upload and Download Security(파일 업로드 및 다운로드 보안)에서 관리할 수 있습니다. 다른 파일 유형의 경우 관련 개체에 대한 사용자 지정 Apex 트리거로 업로드되는 파일 확장자를 제한할 수 있습니다.

 

저장된 파일에서 악성 콘텐츠를 검사하나요?
파일에 악성 콘텐츠가 있는지는 검사하지 않습니다. 데이터는 Salesforce 서버에 바이너리로 저장됩니다. 특정 파일 유형은 검색 인덱싱 또는 미리 보기 표시를 위해 구문 분석되며, 제한적인 권한이 있는 격리된 환경에서 이러한 작업을 수행할 수 있도록 컨트롤이 마련되어 있습니다.

다음 리소스도 유용할 수 있습니다.


파일과 첨부 파일은 만약 감염된 파일이 업로드되더라도 나머지 서비스나 다른 파일에는 영향을 미치지 않는 방식으로 서비스에 저장됩니다. 따라서 플랫폼을 보호하는 것이 최선의 조치입니다. 고객의 엔드포인트를 통제할 수는 없으며, 해당 엔드포인트에 최신 바이러스 백신이 설치되어 있도록 하는 것은 고객의 책임입니다.

앱 레이어는 Tableau의 멀티 테넌트 모델을 통해 인프라 레이어에서 추상화되므로, Tableau는 레이어를 관리하고 보호하는 인프라 레이어와 사용자가 원하는 모든 것을 안전한 방식으로 업로드할 수 있는 앱 레이어로 구분합니다. 하지만 사용자가 감염된 파일을 업로드하기로 선택하거나 일부 고객이 감염된 것으로 알려진 항목을 의도적으로 업로드하는 것까지 제어할 수는 없습니다.

 

임의 SQL 쿼리 실행

검색 결과에는 SQL이 아닌 SOQL이 포함되어 있으므로 보안에 영향을 미치지 않습니다.

이 요청은 조직의 관리자가 설정한 액세스 제어 설정에 따라 사용자가 이미 액세스할 수 있는 개체 및 필드를 쿼리할 수 있는 REST API에 대한 호출입니다.

REST API는 공유, CRUD 및 FLS를 포함한 올바른 사용 권한을 적용합니다. 따라서 사용자에게 이미 액세스 권한이 없는 정보는 노출되지 않으며, 기밀, 독점 정보 또는 공격자에게 유용한 정보도 노출되지 않습니다.

REST API 및 SOQL 쿼리에 대한 자세한 내용은 다음을 참조하세요.

FRONTDOOR.JSP SID

login.salesforce.com을 통해 사용되는 FRONTDOOR.JSP SID는 로그인 시 사용할 수 없는 임시 세션입니다. Salesforce는 API를 통해 frontdoor.jsp?sid=<sessionid>로 로그인하는 기능을 알고 있습니다(임시 세션 ID를 사용할 수 없지만 로그인 시 생성된 SID를 사용할 수 있음).

이 동작에 대한 설명서는 Frontdoor.jsp를 사용하여 Salesforce에 로그인을 참조하세요.

 

JSESSIONID

JSESSIONID는 임시 세션 ID이며 이 쿠키는 악용될 수 없습니다. 기본 세션 쿠키는 SID이며 보안 쿠키로 표시되어 있습니다.

 

HTTP 머리글

X-Content-Type-Options: no sniff
HTTP 머리글은 Setup(설정) | Security Controls(보안 제어) | Session Settings(세션 설정) | Enable Content Sniffing Protection(콘텐츠 검사 방지 활성화)에서 각 조직이 설정하거나 해제할 수 있습니다.

브라우저는 서버가 반환한 Content-Type 머리글을 무시하고 본문 응답의 실제 콘텐츠에서 content-type을 추측할 수 있습니다. 이를 악용하면 브라우저가 악성 JavaScript 또는 CSS를 실행하도록 할 수 있습니다.

HTTP 머리글 X-Content-Type-Options: nosniff는 브라우저가 콘텐츠 또는 포함 태그를 기반으로 파일 유형을 추측하지 못하게 합니다. 브라우저는 서버가 전송한 content-type을 따릅니다.


지시문: referrer

Aloha 전용
이 지시문은 Salesforce에서 타사 도메인으로 이동할 때 Referrer 머리글에 전체 URL이 아닌 Salesforce 도메인만 포함해야 함을 나타냅니다. 이렇게 하면 자산(이미지, 스크립트)을 로드하거나 링크를 클릭할 때 URL에서 다른 사이트로 기밀 정보가 유출되는 것을 방지할 수 있습니다.

Referrer: https://domain.my.salesforce.com/page.jsp?oid=XXXXXX&secret=YYYYY에서 Referrer: https://domain.my.salesforce.com으로 변경

Referrer 머리글은 동일한 도메인 내에서 변경되지 않습니다.
 

HTTP 공개 키 고정

공개 키 고정(HPKP)을 사용하면 웹 사이트가 서버로 전송되는 HPKP 머리글에서 이 웹 사이트에 유효한 인증서 목록을 선언할 수 있습니다. HSTS와 마찬가지로 이 정보는 HPKP 머리글에 지정된 기간 동안 유효합니다.

HPKP 머리글에는 체인에 있는 모든 SSL 인증서의 모든 유효한 공개 키 해시가 포함되어 있습니다. CSP와 마찬가지로 위반 사항만 보고하거나 인증서 불일치를 차단할 수 있습니다.

Salesforce는 보고서 전용 모드에서 HPKP를 사용합니다. 인증서가 PIN 중 하나라도 일치하지 않으면 콘텐츠가 차단되지 않습니다.
 

콘텐츠 보안 정책(CSP) - 보고서

Aloha 전용
Content-Security-Policy-Report-Only 응답 머리글을 사용하면 Salesforce에서 타사 자산의 사용을 모니터링하여 HTTPS 웹 사이트에 로드된 HTTP 콘텐츠를 감지할 수 있습니다.

이 머리글은 정책을 정의합니다. 이 정책은 각 페이지의 브라우저(Chrome, Firefox 및 Safari - Internet Explorer 제외)에서 확인되지만 강제 적용되지는 않습니다. 브라우저는 각 정책 위반에 대해 Salesforce에 보고서를 보냅니다. 이 머리글은 모든 페이지에서 기본적으로 활성화됩니다(Aloha). Lightning은 자체 CSP를 적용합니다.

콘텐츠 보안 정책은 여러 지시문으로 구성되어 있습니다. Aloha에서 지시문은 자산(이미지, 웹 글꼴, 스타일시트 등)이 HTTPS 또는 인라인을 통해 로드될 수 있음을 나타냅니다.

frame-ancestor 지시문은 salesforce.com 및 force.com에만 Salesforce 서비스의 IFRAME이 포함되어야 함을 나타냅니다.
 

HTTP 엄격한 전송 보안(HSTS)

HSTS는 Lightning + 콘텐츠 도메인, VisualForce, 커뮤니티 하위 도메인 및 커뮤니티가 아닌 사이트 하위 도메인에서 login.salesforce.com, MyDomain에 대해 활성화됩니다.

모든 사이트 및 커뮤니티에 대한 HSTS는 Setup(설정) | Security Controls(보안 제어) | Session Settings(세션 설정) | Enable HSTS for all Sites and Communities with the default force.com subdomain that require a secure connection (HTTPS)(보안 연결이 필요한 기본 force.com 하위 도메인이 있는 모든 사이트 및 커뮤니티에 대해 HSTS 활성화(HTTPS))에서 활성화됩니다.

모든 사용자 지정 도메인에 대한 HSTS는 Setup(설정) | Domain Management(도메인 관리) | Click on Domain Name(도메인 이름 클릭) | Enable Strict Transport Security Headers(엄격한 전송 보안 머리글 활성화)에서 활성화할 수 있습니다.
 

X-FRAME 옵션 머리글

고객은 Security Controls(보안 제어) | Session Settings(세션 설정) | Clickjack Protection(클릭재킹 방지)에서 'Prevent Clickjacking(클릭재킹 방지)'을 활성화하여 타사 사이트에 Salesforce IFRAME이 포함되는 것을 방지할 수 있습니다.

모든 VisualForce 페이지에서 이 기능을 활성화하는 것이 좋습니다.

 

기타

캐싱: 플랫폼의 특정 HTTP 응답이 브라우저에서 캐시되는 이유는 무엇인가요? (Cache-Control이 비공개로 설정됨)
Salesforce는 성능상의 이유로 캐시를 수행하며, 이는 HTTP 머리글 캐시 응답 지시문을 통해 제어됩니다. 여기서 주요 보안 문제는 공격자가 로컬 클라이언트 컴퓨터에 액세스하는 경우입니다.

이 시나리오에서 캐시된 데이터에 대한 액세스를 완화하려면 사용자 브라우저가 요청을 캐시하지 않도록 구성하세요. 캐시되는 콘텐츠에 따라 특정 페이지 또는 리소스를 캐시해서는 안 되는지 여부를 사례별로 검토합니다.

 

Salesforce는 RC4 및 3DES 암호화 집합 지원을 중단하나요?
더 이상 HTTPS에 RC4 및 3DES 암호를 지원하지 않습니다.

Knowledge 기사 번호

000383448

 
로드 중
Salesforce Help | Article