вопрос
До сих пор, создавая обращения AJAX я мучаюсь вопросом: как защитить AJAX от прямого обращения. Пробовал защитить его с помощью проверки юзера на "админа", работал на сайте, а от прямого обращения не защитил:
Пробовал передавать дополнительный параметр, к примеру mode:1, но это не сильно безопасно, так как можно посмотреть код JS.
Даже к сожалению не помогло это, хотя я не надеялся что оно поможет:
Подскажите пожалуйста, как и чем вы защищаете AJAX от прямого обращения :) Срочно нужен ваш совет
if($member_id['user_group'] != 1) die ("Hacking Attempt");
Пробовал передавать дополнительный параметр, к примеру mode:1, но это не сильно безопасно, так как можно посмотреть код JS.
$.post(dle_root + 'engine/ajax/myajax.php', { id: id, mode: 1 }, function(data).................
if(($mode!="1" or empty($mode)) OR (!is_numeric($id) OR empty($id))) die ("Hacking Attempt");
Даже к сожалению не помогло это, хотя я не надеялся что оно поможет:
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Kiss your ass :)" );
}
Подскажите пожалуйста, как и чем вы защищаете AJAX от прямого обращения :) Срочно нужен ваш совет
100% защиты нету!
Проверка реферера на данный момент является самым действенным, однако любой скрипт может легко подделать реферера.
Можно замудриться с сессиями и хешами, однако это дело тоже относительно легко обходится.
Так что бери код и ставь во все ajax скрипты
Проверка реферера на данный момент является самым действенным, однако любой скрипт может легко подделать реферера.
Можно замудриться с сессиями и хешами, однако это дело тоже относительно легко обходится.
Так что бери код и ставь во все ajax скрипты
function reset_url($url) {
$value = str_replace ( "http://", "", $url );
$value = str_replace ( "https://", "", $value );
$value = str_replace ( "www.", "", $value );
$value = explode ( "/", $value );
$value = reset ( $value );
return $value;
}
$_SERVER['HTTP_REFERER'] = reset_url ( $_SERVER['HTTP_REFERER'] );
$_SERVER['HTTP_HOST'] = reset_url ( $_SERVER['HTTP_HOST'] );
if ($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) {
@header ( 'Location: ' . $config['http_home_url'] );
die ( "Access denied!!!<br /><br />Please visit <a href=\"{$config['http_home_url']}\">{$config['http_home_url']}</a>" );
}