3
š(ƒh  ã               @   s0   d Z ddlmZ ddlmZ G dd„ deƒZdS )z°
Clickjacking Protection Middleware.

This module provides a middleware that implements protection against a
malicious site loading resources from your site in a hidden frame.
é    )Úsettings)ÚMiddlewareMixinc               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚXFrameOptionsMiddlewareaÖ  
    Middleware that sets the X-Frame-Options HTTP header in HTTP responses.

    Does not set the header if it's already set or if the response contains
    a xframe_options_exempt value set to True.

    By default, sets the X-Frame-Options header to 'SAMEORIGIN', meaning the
    response can only be loaded on a frame within the same site. To prevent the
    response from being loaded in a frame in any site, set X_FRAME_OPTIONS in
    your project's Django settings to 'DENY'.

    Note: older browsers will quietly ignore this header, thus other
    clickjacking protection techniques should be used if protection in those
    browsers is required.

    https://en.wikipedia.org/wiki/Clickjacking#Server_and_client
    c             C   s6   |j dƒd k	r|S t|ddƒr"|S | j||ƒ|d< |S )NzX-Frame-OptionsZxframe_options_exemptF)ÚgetÚgetattrÚget_xframe_options_value)ÚselfÚrequestÚresponse© r   úB/tmp/pip-install-q3hcpn_q/Django/django/middleware/clickjacking.pyÚprocess_response   s    
z(XFrameOptionsMiddleware.process_responsec             C   s   t tddƒjƒ S )aE  
        Gets the value to set for the X_FRAME_OPTIONS header.

        By default this uses the value from the X_FRAME_OPTIONS Django
        settings. If not found in settings, defaults to 'SAMEORIGIN'.

        This method can be overridden if needed, allowing it to vary based on
        the request or response.
        ZX_FRAME_OPTIONSZ
SAMEORIGIN)r   r   Úupper)r   r	   r
   r   r   r   r   +   s    
z0XFrameOptionsMiddleware.get_xframe_options_valueN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   r   N)r   Zdjango.confr   Zdjango.utils.deprecationr   r   r   r   r   r   Ú<module>   s   