Помощник
|
защита ajax файлов, help |
LifeUP
|
Сообщение
#1
|
||
|
|
||
|
|||
Letmetouchyou |
20.8.2010, 2:12;
Ответить: Letmetouchyou
Сообщение
#2
|
|
например так
[PHP]<?php session_start(); $safe_code = $_POST['code']; //_GET $safe_php = $_POST['php']; // _GET $pattern='/http\:\/\/((www\.)?[^\/]+)(.+)$/'; preg_match($pattern, $_SERVER['HTTP_REFERER'], $output); $safe_referer_php = $output[3]; $safe_host = $output[1]; $safe_XHR = $_SERVER['HTTP_X_REQUESTED_WITH']; if($safe_host != $_SERVER['SERVER_NAME']) { die(); //TODO : die - redirect to funny page ;] } if(empty($safe_php) or $safe_php != $safe_referer_php) { die(); } if(empty($safe_XHR) or strtoupper($safe_XHR) != 'XMLHTTPREQUEST'){ die(); } if(empty($safe_code) or $safe_code != $_SESSION['safe']){ die(); } ?>[/PHP] а на странице: [PHP]<?php session_start(); $_SESSION['safe'] = md5(time().'some_security_word'); ?> <script type='text/javascript'> var code = "<?=$_SESSION['safe']?>"; var php = window.location.pathname; </script> [/PHP] ну и при передаче данных передавть ети две переменные |
|
|
Alcorn |
20.8.2010, 5:18;
Ответить: Alcorn
Сообщение
#3
|
|
|
|
|
Alcorn |
20.8.2010, 5:30;
Ответить: Alcorn
Сообщение
#4
|
|
|
|
|
Letmetouchyou |
20.8.2010, 13:18;
Ответить: Letmetouchyou
Сообщение
#5
|
|
Alcorn, только тут помоему не польностью универсальна, если на странице, с окторый будет послан запрос бедут гет парамтеры, то проверка не пропустит, но ето все исправимо.
Выложил чем на данный момнет пользуюсь. а на счет Ничё не понял, 1. <script type='text/javascript'> var code = "<?=$_SESSION['safe']?>"; var php = window.location.pathname; </script> code - "секртеная" строка в сессии, которая будет разной при каждом обновлении страницы. ( Только тут бока, если страницы сайта в нескольких закладках браузера открыты). php - назваиние самой страницы, с которой будет послан запрос ( вот тут и бока сгет парамтерами помоему) 2.[PHP]preg_match($pattern, $_SERVER['HTTP_REFERER'], $output); $safe_referer_php = $output[3]; $safe_host = $output[1];[/PHP] их массива сервер из http_referere выризаем название домена, откуда ПРИШОЛ запрос, и название страницы откуда пришол запроса. название домена - долэно быть равно $_SERVER['SERVER_NAME'] если зайти просто на обработчик, то никакого значения в referer не будет, и будет die(); название файла откуда пришол запрос ($safe_referer_php) должно быть равно переменной яваскрипта -php, которая передаеться в запросе. 3. [PHP]$safe_XHR = $_SERVER['HTTP_X_REQUESTED_WITH']; [/PHP] в любом случае должно быть равно XMLHttpRequest - если это аякс запрос 4. [PHP]if(empty($safe_code) or $safe_code != $_SESSION['safe']){[/PHP] ну иприверка пременной, которая прислана со страницы с переменной в сессии. Нотут уже бока, о которых я писал выше, но проблема решаема ) |
|
|
Белый Тигр |
20.8.2010, 16:52;
Ответить: Белый Тигр
Сообщение
#6
|
|
Только аккуратным безопасным кодом. Больше ничем. Если понадобится, злоумышленник просто начнёт имитировать XHR-запрос и будет посылать серверным скриптам всё что захочет.
|
|
|
Alcorn |
20.8.2010, 17:42;
Ответить: Alcorn
Сообщение
#7
|
|
|
Механизм ясен, но непонятно зачем это всё. Тогда и обычный submit нужно точно так же защищать. В итоге усложнение кода, а есть ли польза?
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44916 | 19.7.2023, 10:03 автор: qpPeW |
|
WordPress: ускорение, защита, оптимизация | 35 | wp01 | 20050 | 9.11.2022, 14:24 автор: wp01 |
|
WordPress: ускорение, защита, оптимизация | 41 | wp01 | 9610 | 21.9.2020, 16:44 автор: wp01 |
|
FinFile - новые возможности для монетизации Ваших файлов! | 3 | FileXmaster | 2081 | 25.7.2020, 16:10 автор: -Condis- |
|
Нужна защита сайта от парсинга Сайт парсит WpGrabber, нужна защита |
18 | Limonadik | 4975 | 20.5.2020, 0:18 автор: pyaterka |
Текстовая версия | Сейчас: 23.4.2024, 15:01 |