File: //usr/local/CyberCP/lib/python3.10/site-packages/django/middleware/__pycache__/csrf.cpython-310.pyc
o
�hM � @ s� d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl m
Z
mZ ddlm
Z
mZ ddlmZ dd lmZ dd
lmZmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlmZ e� d�Z!ed�Z"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,de, Z-ej.ej/ Z0dZ1dd� Z2d d!� Z3d"d#� Z4d$d%� Z5d&d'� Z6d(d)� Z7d*d+� Z8G d,d-� d-e9�Z:d.d/� Z;d0d1� Z<G d2d3� d3e9�Z=G d4d5� d5e�Z>dS )6z�
Cross Site Request Forgery Middleware.
This module provides a middleware that implements protection
against request forgeries from other sites.
� N)�defaultdict��urlparse)�settings)�DisallowedHost�ImproperlyConfigured)�HttpHeaders�UnreadablePostError)�get_callable)�patch_vary_headers)�constant_time_compare�get_random_string)�MiddlewareMixin)�cached_property��is_same_domain)�log_response)�_lazy_re_compilezdjango.security.csrfz[^a-zA-Z0-9]z?Origin checking failed - %s does not match any trusted origins.z%Referer checking failed - no Referer.z@Referer checking failed - %s does not match any trusted origins.zCSRF cookie not set.zCSRF token missing.z/Referer checking failed - Referer is malformed.zCReferer checking failed - Referer is insecure while host is secure.zhas incorrect lengthzhas invalid characters� � �
_csrftokenc C s
t tj�S )z/Return the view to be used for CSRF rejections.)r
r �CSRF_FAILURE_VIEW� r r �I/usr/local/CyberCP/lib/python3.10/site-packages/django/middleware/csrf.py�_get_failure_view1 s
r c C s t ttd�S )N)�
allowed_chars)r
�CSRF_SECRET_LENGTH�CSRF_ALLOWED_CHARSr r r r �_get_new_csrf_string6 s r c sP t � }t� t� fdd�| D �� fdd�|D ��}d�� fdd�|D ��}|| S )z�
Given a secret (assumed to be a string of CSRF_ALLOWED_CHARS), generate a
token by adding a mask and applying it to the secret.
c 3 � � | ]}� � |�V qd S �N��index��.0�x��charsr r � <genexpr>A � � z&_mask_cipher_secret.<locals>.<genexpr>� c 3 s( � | ]\}}� || t � � V qd S r )�len�r$ r% �yr&