Skip to content

Instantly share code, notes, and snippets.

@srghma
Last active October 10, 2022 09:54
Show Gist options
  • Save srghma/4828dacde30d6996c0ecc9d0bf40e01b to your computer and use it in GitHub Desktop.
Save srghma/4828dacde30d6996c0ecc9d0bf40e01b to your computer and use it in GitHub Desktop.
MindTrash

How to debug sublime plugins:

  • install rpdb through pip
  • import rpdb; rpdb.set_trace()
  • telnet 127.0.0.1 4444

Разница между CSRF (Cross-Site Request Forgery) и XSS (Cross-Site Scripting)

Оба - атака на пользователя, в отличие от SQL Injection (атака на сервер)

XSS:
  • цель - заставить браузер жертв(ы) исполнить код
  • эксплуатируется доверие юзера к сайту пример:
  • злоумышленник может писать на нашем сайте (ревью к примеру), если input не экранируется, он может внедрить <script>
CSRF:
  • цель - заставить браузер жертвы исполнить запрос
  • эксплуатируется доверия нашего сайта к браузеру юзера пример:
  • злоумышленник не может изменять наш сайт: злоумышленник создает фишинговую страницу с <img src="oursite/transfer_money">, при попытке закрузить img выполнится GET request, если жертва авторизирована на нашем сайте с помощью cookie - они передадутся с запросом. Решение - токен, сгенерированный нашим сайтом, который юзер должен "вручную" вставлять в каждый request
  • злоумышленник может изменять наш сайт: злоумышленник использует XSS уязвимость для совершения CSRF

Нормализация - приведение бд к нормальной форме

Денормализация - обратное действие, выполняется для повышения производительности (например, кеширование цена_заказа*количество_заказов, так мы нарушаем 4 форму)

Нормальные формы бд - рекомендации при проектировании бд. Цель - устранение избыточности. В общем, что бы привести бд в нормальную форму ее следует декомпозировать (разбить на несколько)

  1. Атомарность. 1 ячейка не должна содержать несколько значений сведений о рельном мире.

  2. (касается только составных ключей) Атрибут не может зависеть от части составного ключа, только от целого. Таблица ПОСТАВКИ ([N_ПОСТАВЩИКА, ТОВАР], ЦЕНА), где ЦЕНА -> (зависит только от) ТОВАР, должна быть разбита на 2 таблицы ПОСТАВКИ ([N_ПОСТАВЩИКА], ТОВАР) ЦЕНА_ТОВАРА ([ТОВАР], ЦЕНА)

  3. Атрибуты зависят только от ключей, без посредников в виде других атрибутов. Нормальная форма Бойса-Кодда - то же самое что и 3 форма, но рекомендация касается не только атрибутов, но и других ключей. Таблица ХРАНЕНИЕ ([ФИРМА], СКЛАД, ОБЪЕМ), где СКЛАД -> ФИРМА, ОБЪЕМ -> СКЛАД, должна быть разбита на ХРАНЕНИЕ ([ФИРМА], СКЛАД) ОБЪЕМ_СКЛАДА ([СКЛАД], ОБЪЕМ)

  4. Атрибуты независимы и не повторяются

5 и 6. Все возможные декомпозиции проведены, а дальнейшие приведут к потере данных

Обозначения - НАЗВАНИЕ_ТАБЛИЦЫ ([СТОЛБЕЦ_СОСТАВНОГО_КЛЮЧА1, СТОЛБЕЦ_СОСТАВНОГО_КЛЮЧА2], НЕКЛЮЧЕВОЙ_СТОЛБЕЦ), -> - зависит от


CAP theorem

Consistency && availability -- sqlite, only one node Consistency && partition tolerance -- I will by disabled until all my nodes syncronize Availibility && partition tolerance -- diff nodes - diff answers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment