Рубрики
Без рубрики

Взлом веб -сайтов Django: Защита от запроса на кросс -сайт подделка

Готовы к вызову безопасности Django? Играйте в наш Django Security Challenge. Вредоносный веб -сайт, который … Tagged с Django, Python, Security, WebDev.

Готовы к вызову безопасности Django? Играйте на нашем Django Security Challenge .

Злоусованный веб -сайт, к которому обращается один из ваших зарегистрированных пользователей, может обмануть ваш сайт, чтобы подумать о запросе от этого пользователя. Это может выглядеть так:

  1. Пользователь обращается к вредоносному веб -сайту
  2. Веб -сайт выполняет JavaScript для выполнения запроса на ваш сайт
  3. Браузер разоблачает файлы cookie пользователя на ваш сайт
  4. Ваш сайт считает, что запрос исходил от них

Вот конкретный пример атаки CSRF:

И без необходимости взаимодействия от пользователя

Влияние этой атаки зависит от того, что делают формы на вашем сайте. Возможно, форма создает PR Github, который удаляет технический долг Django из вашей кодовой базы (например, на https://django.doctor ), или, может быть, она передает деньги кому -то? Задает заявку на предмет? Передает право собственности на аккаунт кому -то другому? Возможности безграничны.

Код

Самое простое доказательство концепции CODE CODE заключается в следующем:

import React from 'react';

export default function (props) {
  return (
    
); }

И сделать форму автоматической отправкой без необходимости взаимодействия с пользователем:

import React from 'react';

export default function (props) {
  React.useEffect(function() { 
    document.forms[0].submit()
  }, []);

  return (
    
); }

Профилактика

Добавьте следующее в настройки Django, чтобы предотвратить атаки CSRF:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    ...
]

И используйте Джанго csrf_token метка шаблона в ваших формах. Это приведет к тому, что Django подтвердит представленный форма, поступившая с вашего веб -сайта (ожидание будет только на вашем веб -сайте будет иметь действительные токены CSRF).

Есть ли у вашего сайта уязвимости безопасности?

Со временем для уязвимостей безопасности и технического долга легко проникнуть в вашу кодовую базу. Я могу проверить это для вас в django.doctor , или может Просмотрите свой GitHub PRS :

Или попробуйте Django Refactor Challenges Анкет

Оригинал: “https://dev.to/djangodoctor/hacking-django-websites-cross-site-request-protection-2i1i”