/решено/ Авторизация и AJAX

Компьютерное железо, цифровые устройства, программы

Модератор: Raven

Ответить
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

/решено/ Авторизация и AJAX

Сообщение alvd »

========================
всё просто... AJAX запрос должен получить правильный ответ, типа ВРЕМЯ_ВЫШЛО" и перенаправить на логин.
========================

Надо допилить базу данных (повесить авторизацию). В активе знание PHP, MySQL и умение всё настроить на серверной стороне, HTML и CSS на клиентской. В пассиве плохое понимание Javascript.

Вопросы:
1. если я делаю авторизацию юзера, создавая куку, достаточно ли поместить в неё ID юзера и некоторое случайное число на период жизни куки, чтобы проверять его на время сеанса юзера?
2. на страничках есть AJAX запросы

Код: Выделить всё

request.open('GET', 'ajax.php?value=' + eURI, true);
request.send();[code] и соответственно, дёргается страничка ajax.php с набором параметров. Надо ли проверять куку и в [b]ajax.php[/b]?

И вообще, может не надо куку, а надо скрытое поле, или что там ещё есть... Как правильно проверяется авторизация пользователя, чтобы враг не проник в БД?
Последний раз редактировалось alvd 22 мар 2015 10:32, всего редактировалось 1 раз.
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
Аватара пользователя
Zaxarov
Super expert
Super expert
Сообщения: 8354
Зарегистрирован: 25 дек 2009 08:33
Откуда: nosql.ru !
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение Zaxarov »

[quote="alvd"]Надо допилить базу данных (повесить авторизацию). В активе знание PHP, MySQL и умение всё настроить на серверной стороне, HTML и CSS на клиентской. В пассиве плохое понимание Javascript.

Вопросы:
1. если я делаю авторизацию юзера, создавая куку, достаточно ли поместить в неё ID юзера и некоторое случайное число на период жизни куки, чтобы проверять его на время сеанса юзера?
2. на страничках есть AJAX запросы

Код: Выделить всё

request.open('GET', 'ajax.php?value=' + eURI, true);
request.send();[code] и соответственно, дёргается страничка ajax.php с набором параметров. Надо ли проверять куку и в [b]ajax.php[/b]?

И вообще, может не надо куку, а надо скрытое поле, или что там ещё есть... Как правильно проверяется авторизация пользователя, чтобы враг не проник в БД?[/quote]

хех... чтобы враг в БД не проник, нужна трехзвёнка с application server  :oops: 
А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия. 
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
nosql.ru !
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение alvd »

Zaxarov писал(а):А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия.
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
Т.е. куку можно проверять на наличие, нету - значит, на логин, если есть, ставить заново, так? А в той страничке, которую дёргает javascript - тоже куку проверять? Т.е. если у меня при выборе из списка заполняется комбобокс, то та страничка что отдаёт данные комбобоксу, куку должна проверять? И потом, кука кончилась, javascript дёрнул ручку, в ответ сервер должен вернуть... что, собственно, вернуть?
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
Аватара пользователя
Zaxarov
Super expert
Super expert
Сообщения: 8354
Зарегистрирован: 25 дек 2009 08:33
Откуда: nosql.ru !
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение Zaxarov »

alvd писал(а):
Zaxarov писал(а):А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия.
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
Т.е. куку можно проверять на наличие, нету - значит, на логин, если есть, ставить заново, так? А в той страничке, которую дёргает javascript - тоже куку проверять? Т.е. если у меня при выборе из списка заполняется комбобокс, то та страничка что отдаёт данные комбобоксу, куку должна проверять? И потом, кука кончилась, javascript дёрнул ручку, в ответ сервер должен вернуть... что, собственно, вернуть?
ты должен проверять не время создания куки, а её содержимое. В куку занеси дату-время создания куки, таки кука - вполне физический файл. Пусть и с нулевой длиной.
Если кука кончилась хотя бы в одном из скриптов - сразу на страницу авторизации.

Но я бы тебе посоветовал перейти на HTTPS, там оно более всё правильно.
nosql.ru !
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение alvd »

Zaxarov писал(а):Если кука кончилась хотя бы в одном из скриптов - сразу на страницу авторизации.
т.е. в страничка, которую дёргает javascript, должна вернуть что?
Zaxarov писал(а):Но я бы тебе посоветовал перейти на HTTPS, там оно более всё правильно.
А тут я прошу ткнуть меня носом в умную книгу...
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
Аватара пользователя
Zaxarov
Super expert
Super expert
Сообщения: 8354
Зарегистрирован: 25 дек 2009 08:33
Откуда: nosql.ru !
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение Zaxarov »

alvd писал(а):А тут я прошу ткнуть меня носом в умную книгу...
Без знания, чего у тебя там и как, то вот примерно так:
http://help.ubuntu.ru/wiki/apache_%D0%B8_https
nosql.ru !
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение alvd »

Zaxarov, с книгой понятно, а вернуть-то что, чтобы сразу на логин? Для обычной страницы я перенаправление сделаю (правильно?), а для ajax что?
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
Аватара пользователя
Zaxarov
Super expert
Super expert
Сообщения: 8354
Зарегистрирован: 25 дек 2009 08:33
Откуда: nosql.ru !
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение Zaxarov »

alvd писал(а):Zaxarov, с книгой понятно, а вернуть-то что, чтобы сразу на логин? Для обычной страницы я перенаправление сделаю (правильно?), а для ajax что?
ну так ты страничку просто переадресуй, на страницу логина.
Блин, ну не знаю, как на пальцах объяснить :cry:
nosql.ru !
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

Авторизация и AJAX - прошу совета

Сообщение alvd »

Zaxarov писал(а):Блин, ну не знаю, как на пальцах объяснить :cry:
Допустим, основная страничка

Код: Выделить всё

<?php
  SetCookie("test", "testcookie", time()+60);
  echo @$_COOKIE["test"];
?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AJAX test</title>
</head>
    <body onLoad="doSelect()">
    <script type="text/javascript">
	function test(value)
	{
		var request = new XMLHttpRequest();
		var eURI = encodeURIComponent(value);
		request.onreadystatechange = function()
		{
		  if (request.readyState == 4 && request.status == 200)
		  {
		    document.getElementById("txtAJAX").innerHTML=request.responseText;
		  }
		};
		request.open('GET', 'ajax.php?value=' + eURI, true);
		request.send();
	};
	function doSelect()
	{
		document.all["position"].selectedIndex = 0;//options[0].selected = true;
	};
	</script>
	<form action="">
		<select name="position" onchange="test(this.value)">
			<option disabled>Выберите</option>
			<option>1</option>
			<option>2</option>
			<option>3</option>
		</select>
	</form>
	<hr>
	<div id="txtAJAX"></div>
	<hr>
	
    </body>
</html>
и страничка которую вызывает request

Код: Выделить всё

<?php
	$param = $_GET['value'];
	$coo = $_COOKIE['test'];
	$paramVal = intval($param);
	if (($paramVal < 1) or ($paramVal > 3))
		echo "Элемент не выбран";
	else
		echo "value = $paramVal; cookie = $coo";
?>
и допустим куки нет. Что должна вернуть страничка, чтобы попасть опять на логин?
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
alvd
Pro Member
Pro Member
Сообщения: 708
Зарегистрирован: 22 апр 2007 14:42
Откуда: Подольск
Контактная информация:

/решено/ Авторизация и AJAX

Сообщение alvd »

В общем, со стороны сервера

Код: Выделить всё

<?php
  require_once 'connect.php';
  if (!checkLogged()) echo END_OF_SESSION;
  else
  {
    делаем_что_то;
  }
?>
и со стороны клиента

Код: Выделить всё

if (request.readyState == 4 && request.status == 200)
{
   var response = request.responseText;		    
   if (response.indexOf('SESSION_CLOSED_BY_TIMEOUT')+1) window.location.href = 'login.php'
   else document.getElementById("txtAJAX").innerHTML = response;
}
В начале страницы, соответственно, тоже проверять.
Восстановление данных в Подольске.
В том числе и с неисправных носителей.
Парковая, 57, 8-4967-52-77-60
пн-пт 13..20, сб 09..14, вс выходной
Ответить

Вернуться в «Hard & Soft»