piroman-lynx/lpg_csrf_token
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Данная библиотека предназначена для защиты сайтов целиком построенных на ajax от CSRF атак. Возможности библиотки: * Защита от включений в <img src="">, <iframe src="">, <script src=""> и т.п. * Возможность открытия страниц сайта в новой вкладке с новым токеном. Каждое новое окно браузера работает с отдельным независимым токеном. * Защита не только от нелегальных действий на сайте (например спама), но и от просмотра личной информации пользователя. При правильной обработке возвращаемого значения функции lpg_csrf_token можно обрубать любой запрос без токена Поддержка браузеров (проверено): * Firefox 3.6+ * Opera 9.00+ * IE 7+ * Google Chrome Данная библиотека использует: * php 5.3+ (возможно и на 5.2 будет работать) * jquery 1.6 + Как подключить библиотеку: git clone git://github.com/piroman-lynx/lpg_csrf_token.git После вам нужно подключить файл lpg_csrf_token/bootstrap.php в Ваш основной входной файл (обычно это index.php). Далее при обработке входящего запроса (до того как вы начали делать действия, но после того как запущена сессия) вы должны выполнить следующую проверку: if (!lpg_csrf_token('your_token_secret','your loading text name')){ header('Location: /'); die; //токен не верный отправляем на главную и обрываем скрип } так же к Ващим js надо будет подключить файл: <script type="text/javascript" src="/lpg_csrf_token/token.js"></script> --------------------------------- Принцип работы библиотеки: Библиотека требует от ajax запросов отправки заголовка X-CSRF-TOKEN с токеном внутри. Если запрос выполняется через ajax, а токен не верный или его нет - библотека отписывает в лог об ошибке и функция lpg_csrf_token возвращает false Если запрос выполнен не через ajax и не имеет никаких токенов, отдается страничка вида: <html> <body> <?php echo $loading_text; ?> <script type='text/javascript'> <?php /** check img and other left src tags **/ ?> if (parent.document.location.href == document.location.href){ <?php /** check iframe **/ ?> document.location.href='<?php echo $url; ?>'; } </script> </body> </html> Эта стрица позволяет загрузить приложение с проверкой токена не в Header а в GET и после этого начать обычную работу с ajax (это позволяет открывать страницы сайта в новой вкладке/окне и вообще осуществлять первый вход на сайт). Так же эта страничка позволяет защититься от включений вида <img src="ваш_сайт"> - тего img не обработает javascript и от включений в <iframe src="..."> - от этого предохраняет проверка parent.
About
Сross Site Request Forgery protection for php with jquery (only ajax sites)
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published