iframes (인라인 프레임)는 웹 페이지 내에 직접 외부 컨텐츠를 포함 할 수있는 HTML 요소입니다. 다양한 소스의 컨텐츠를 통합하여 사용자 경험을 향상시킬 수 있지만 몇 가지 보안에 영향을 미칩니다.
크로스 사이트 스크립팅 (XSS) : Iframe이 신뢰할 수 없거나 손상되지 않은 소스에서 컨텐츠를로드하면 사이트의 맥락에서 악의적 인 스크립트를 실행하여 잠재적으로 사용자 데이터를 훔치거나 사용자를 대신하여 작업을 수행 할 수 있습니다.
완화 : sandbox
속성을 사용하여 iframe의 기능을 제한하십시오. 이 속성을 사용하면 스크립트 실행 방지, 양식 제출 등과 같은 제한을 부과 할 수 있습니다. 또한 IFRAME 컨텐츠 또는 속성에 영향을 줄 수있는 사용자 입력을 항상 검증하고 소독하십시오.
클릭 잭킹 : 이것은 Iframe이 사용자가 클릭하고 있다고 인식하는 것과 다른 것을 클릭하도록하는 데 사용되는 경우에 발생합니다.
완화 : X-Frame-Options
HTTP 헤더를 구현하여 페이지 프레임을 제어하고 컨텐츠 보안 정책 (CSP)의 frame-ancestors
지시문을 사용하여 컨텐츠를 포함 할 수있는 도메인을 추가로 제어하십시오.
정보 유출 : iframes는로드 된 컨텐츠를 통해 또는 다른 사이트가 사이트의 특정 데이터에 액세스 할 수 있도록함으로써 민감한 정보를 노출시킬 수 있습니다.
완화 : iframes에 액세스 할 수있는 데이터에주의하십시오. referrer
정책을 사용하여 iframe을로드 할 때 Referer
헤더에 전송되는 정보를 제한하십시오. 또한 신뢰할 수없는 소스의 IFRAME를 통해 민감한 정보에 액세스 할 수 없도록하십시오.
DOS (Denial of Service) : 악의적으로 제작 된 iframes를 사용하여 동일한 자원을 여러 번로드하여 서버에 과부하를 줄 수 있습니다.
완화 : 잠재적 인 DOS 공격을 감지하고 완화하기위한 속도 제한 및 모니터링 구현. 또한 캐싱 전략을 사용하여 iframes 내에서 컨텐츠를 제공 할 때 서버로드를 줄입니다.
귀하의 웹 사이트의 IFRAME을 크로스 사이트 스크립팅 (XSS) 공격으로부터 보호하려면 다음을 수행하십시오.
sandbox
속성 사용 : sandbox
속성은 iframe이 할 수있는 일에 대한 제한을 부과하여 XSS의 위험을 크게 줄일 수 있습니다. 예를 들어, sandbox="allow-scripts"
를 설정하면 여전히 스크립트 실행이 허용되지만보다 제어 된 환경 내에 있습니다.
<code class="html"><iframe sandbox="allow-scripts" src="https://example.com"></iframe></code>
컨텐츠 보안 정책 (CSP) 구현 : CSP 헤더를 사용하여 사이트 내에서 실행할 수있는 컨텐츠 소스를 정의하십시오. 예를 들어, 엄격한 CSP는 다음과 같습니다.
<code>Content-Security-Policy: "default-src 'self'; script-src 'self' 'unsafe-inline';"</code>
이 정책은 스크립트가 동일한 원점에서만로드되도록 제한되어 외부 스크립트가 실행되는 것을 방지합니다.
unsafe-inline
사용을 피하십시오. unsafe-inline
지시문은 인라인 스크립트를 허용하여 제대로 관리하지 않으면 위험 할 수 있습니다. 위험을 최소화하기 위해 인라인 스크립트에 해시 또는 비스를 사용하십시오.HttpOnly
플래그와 함께 세션 쿠키가 설정되어 있는지 확인하십시오.iframes를 사용할 때 클릭 재킹을 방지하려면 다음 단계를 고려하십시오.
X-Frame-Options
구현 헤더 구현 : X-Frame-Options
HTTP 헤더를 사용하여 사이트를 프레임 할 수 있는지 여부를 제어하십시오. 일반적인 값은 다음과 같습니다.
DENY
- 사이트의 프레임을 방지합니다.SAMEORIGIN
귀하의 사이트는 동일한 원점의 페이지로만 사이트를 구성 할 수 있습니다.ALLOW-FROM uri
사이트를 구성 할 수있는 특정 URI를 지정합니다 (이는 더 이상 사용되지 않고 일반적으로 지원되지 않음).예:
<code>X-Frame-Options: SAMEORIGIN</code>
컨텐츠 보안 정책의 frame-ancestors
지침을 활용 : 이 지침은 X-Frame-Options
보다 유연하고 강력합니다. iframe 내에 페이지를 포함시킬 수있는 도메인을 지정할 수 있습니다.
예:
<code>Content-Security-Policy: frame-ancestors 'self' example.com;</code>
프레임 버스트 JavaScript 사용 : 서버 측 헤더를 적용 할 수없는 경우 프레임 버스트 JavaScript를 사용하여 사이트가 프레임이 있는지 여부를 감지하고 프레임에서 벗어날 수 있습니다.
<code class="javascript">if (top !== self) { top.location = self.location; }</code>
그러나 최신 브라우저를 해당 스크립트를 차단하도록 구성 할 수 있으므로이 방법은 덜 신뢰할 수 있습니다.
iframes의 보안을 향상 시키려면 다음과 같은 특정 구성 및 설정을 적용하십시오.
sandbox
속성 사용 : sandbox
속성을 적용하여 iframe이 수행 할 수있는 동작을 제한하십시오. 예를 들어:
<code class="html"><iframe sandbox="allow-scripts allow-forms" src="https://example.com"></iframe></code>
이 설정은 스크립트 및 양식 제출을 허용하지만 잠재적으로 위험한 다른 행동을 방지합니다.
allow
속성 세트 : allow
속성을 사용하면 iframe이 사용할 수있는 카메라, 마이크 또는 지리적 위치 액세스와 같은 기능을 지정할 수 있습니다. 예를 들어:
<code class="html"><iframe allow="geolocation" src="https://maps.example.com"></iframe></code>
referrerpolicy
속성 사용 : Iframe이로드 될 때 Referer
헤더에서 전송 된 정보를 제어하십시오. 예를 들어, 참조자 정보를 보내지 않으려면 다음을 사용하십시오.
<code class="html"><iframe referrerpolicy="no-referrer" src="https://example.com"></iframe></code>
loading
속성 구현 : loading
속성을 사용하여 Iframe이 컨텐츠로드하는 방식을 제어하여 성능 및 보안을 향상시킬 수 있습니다. 예를 들어:
<code class="html"><iframe loading="lazy" src="https://example.com"></iframe></code>
이것은 필요할 때까지 Iframe의 로딩을 지연시켜 공격 표면을 줄입니다.
src
속성을 구성하십시오. IFRAME가 신뢰할 수있는 소스에서 컨텐츠를로드하도록 허용합니다. src
속성에 영향을 줄 수있는 사용자 입력을 검증하고 소독합니다.이러한 구성을 적용하면 웹 사이트에서 iframes의 보안을 크게 향상시킬 수 있습니다.
위 내용은 iframes 사용의 보안 영향은 무엇이며 어떻게 완화 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!