Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2012, 09:03
Новичок на форуме
Отправить личное сообщение для Jason Bourne Посмотреть профиль Найти все сообщения от Jason Bourne
 
Регистрация: 03.08.2008
Сообщений: 7

Идентификация пользователя и бан по ID
Существует система супербана, реализованная на одном сервисе форума, где генерируется уникальный ID компъютера на основе версий некоторых компонентов.
var key = screen.width + ' '+screen.height + ' ' + screen.colorDepth;
	var tz = -new Date().getTimezoneOffset()/60;
	var random = Math.floor(Math.random()*(99999-10000)+10000);
	key += ' ' + tz;

	var ie_info = '';
	if (isIE) {
		document.write('<xml:namespace ns=http://www.microsoft.com/ie prefix=IE><STYLE>@media all{IE\\:clientCaps {behavior:url(#default#clientcaps);}}</STYLE><IE:CLIENTCAPS ID="oClientCaps" />');
		key += ' ';
		if (oClientCaps.connectionType) ie_info += oClientCaps.connectionType + ' ';
		if (oClientCaps.cpuClass) ie_info += oClientCaps.cpuClass + ' ';
		if (oClientCaps.platform) ie_info += oClientCaps.platform + ' ';
		if (oClientCaps.systemLanguage) key += oClientCaps.systemLanguage + ' ';
		if (oClientCaps.userLanguage) key += oClientCaps.userLanguage + ' ';
		var bbb = new Array();
		var ccc = new Array(0,0,0,0);
		var CompO = new Array("{7790769C-0471-11D2-AF11-00C04FA35D02}","{89820200-ECBD-11CF-8B85-00AA005B4340}","{283807B5-2C60-11D0-A31D-00AA00B92C03}","{4F216970-C90C-11D1-B5C7-0000F8051515}","{44BBA848-CC51-11CF-AAFA-00AA00B6015C}","{9381D8F2-0288-11D0-9501-00AA00B911A5}","{36F8EC70-C29A-11D1-B5C7-0000F8051515}","{5A8D6EE0-3E18-11D0-821E-444553540000}","{89820200-ECBD-11CF-8B85-00AA005B4383}","{08B0E5C0-4FCB-11CF-AAA5-00401C608555}","{45EA75A0-A269-11D1-B5BF-0000F8051515}","{DE5AED00-A4BF-11D1-9948-00C04F98BBC9}","{22D6F312-B0F6-11D0-94AB-0080C74C7E95}","{44BBA842-CC51-11CF-AAFA-00AA00B6015B}","{3AF36230-A269-11D1-B5BF-0000F8051515}","{44BBA840-CC51-11CF-AAFA-00AA00B6015C}","{CC2A9BA0-3BDD-11D0-821E-444553540000}","{08B0E5C0-4FCB-11CF-AAA5-00401C608500}","{60B49E34-C7CC-11D0-8953-00A0C90347FF}","{03F998B2-0E00-11D3-A498-00104B6EB52E}","{0FDE1F56-0D59-4FD7-9624-E3DF6B419D0E}","{10072CEC-8CC1-11D1-986E-00A0C955B42F}","{1B00725B-C455-4DE6-BFB6-AD540AD427CD}","{4278C270-A269-11D1-B5BF-0000F8051515}","{44BBA855-CC51-11CF-AAFA-00AA00B6015C}","{4F645220-306D-11D2-995D-00C04F98BBC9}","{5FD399C0-A70A-11D1-9948-00C04F98BBC9}","{630B1DA0-B465-11D1-9948-00C04F98BBC9}","{6FAB99D0-BAB8-11D1-994A-00C04F98BBC9}","{C9E9A340-D1F1-11D0-821E-444553540600}","{D27CDB6E-AE6D-11CF-96B8-444553540000}","{E92B03AB-B707-11D2-9CBD-0000F87A369E}");
		if (typeof oClientCaps.getComponentVersion != 'undefined') {
			for (var iii = 0; iii < CompO.length; iii++) {
				var Ver = oClientCaps.getComponentVersion(CompO[iii], "ComponentID");
				var aaa = Ver.split(',');
				for (var jjj = 0; jjj < aaa.length; jjj++) {
					aaa[jjj]++; aaa[jjj]--; ccc[jjj] += aaa[jjj];
					random = ccc[0] + '' + ccc[1] + '' + ccc[2] + '' + ccc[3];
				}
			}
			ie_info += random;
		}
		//if (!ie_info) ie_info = 'no';
		key += ' ' + ddd;
	}


Я немного доработал этот код с учетом этой статьи. Получилось:

function get_id()
{
	var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

	var key = screen.width + ' '+screen.height + ' ' + screen.colorDepth;
	var tz = -new Date().getTimezoneOffset()/60;
	var random = Math.floor(Math.random()*(99999-10000)+10000);
	key += ' ' + tz;

	var ie_info = '';
	if (isIE) {
		document.write('<xml:namespace ns=http://www.microsoft.com/ie prefix=IE><STYLE>@media all{IE\\:clientCaps {behavior:url(#default#clientcaps);}}</STYLE><IE:CLIENTCAPS ID="oClientCaps" />');
		key += ' ';
		if (oClientCaps.connectionType) ie_info += oClientCaps.connectionType + ' ';
		if (oClientCaps.cpuClass) ie_info += oClientCaps.cpuClass + ' ';
		if (oClientCaps.platform) ie_info += oClientCaps.platform + ' ';
		if (oClientCaps.systemLanguage) key += oClientCaps.systemLanguage + ' ';
		if (oClientCaps.userLanguage) key += oClientCaps.userLanguage + ' ';
		var bbb = new Array();
		var ccc = new Array(0,0,0,0);
		var CompO = new Array("{7790769C-0471-11D2-AF11-00C04FA35D02}","{89820200-ECBD-11CF-8B85-00AA005B4340}","{283807B5-2C60-11D0-A31D-00AA00B92C03}","{4F216970-C90C-11D1-B5C7-0000F8051515}","{44BBA848-CC51-11CF-AAFA-00AA00B6015C}","{9381D8F2-0288-11D0-9501-00AA00B911A5}","{36F8EC70-C29A-11D1-B5C7-0000F8051515}","{5A8D6EE0-3E18-11D0-821E-444553540000}","{89820200-ECBD-11CF-8B85-00AA005B4383}","{08B0E5C0-4FCB-11CF-AAA5-00401C608555}","{45EA75A0-A269-11D1-B5BF-0000F8051515}","{DE5AED00-A4BF-11D1-9948-00C04F98BBC9}","{22D6F312-B0F6-11D0-94AB-0080C74C7E95}","{44BBA842-CC51-11CF-AAFA-00AA00B6015B}","{3AF36230-A269-11D1-B5BF-0000F8051515}","{44BBA840-CC51-11CF-AAFA-00AA00B6015C}","{CC2A9BA0-3BDD-11D0-821E-444553540000}","{08B0E5C0-4FCB-11CF-AAA5-00401C608500}","{60B49E34-C7CC-11D0-8953-00A0C90347FF}","{03F998B2-0E00-11D3-A498-00104B6EB52E}","{0FDE1F56-0D59-4FD7-9624-E3DF6B419D0E}","{10072CEC-8CC1-11D1-986E-00A0C955B42F}","{1B00725B-C455-4DE6-BFB6-AD540AD427CD}","{4278C270-A269-11D1-B5BF-0000F8051515}","{44BBA855-CC51-11CF-AAFA-00AA00B6015C}","{4F645220-306D-11D2-995D-00C04F98BBC9}","{5FD399C0-A70A-11D1-9948-00C04F98BBC9}","{630B1DA0-B465-11D1-9948-00C04F98BBC9}","{6FAB99D0-BAB8-11D1-994A-00C04F98BBC9}","{C9E9A340-D1F1-11D0-821E-444553540600}","{D27CDB6E-AE6D-11CF-96B8-444553540000}","{E92B03AB-B707-11D2-9CBD-0000F87A369E}");
		if (typeof oClientCaps.getComponentVersion != 'undefined') {
			for (var iii = 0; iii < CompO.length; iii++) {
				var Ver = oClientCaps.getComponentVersion(CompO[iii], "ComponentID");
				var aaa = Ver.split(',');
				for (var jjj = 0; jjj < aaa.length; jjj++) {
					aaa[jjj]++; aaa[jjj]--; ccc[jjj] += aaa[jjj];
					random = ccc[0] + '' + ccc[1] + '' + ccc[2] + '' + ccc[3];
				}
			}
			ie_info += random;
		}
		//if (!ie_info) ie_info = 'no';
		key += ' ' + ddd;
	}
	else
	{
		var ff_info = 'no';
		var bbb = new Array();
		var ccc = new Array(0,0,0,0);
		if(navigator.cpuClass) key += ' ' + navigator.cpuClass;
		if(navigator.platform) key += ' ' + navigator.platform;
		if(navigator.systemLanguage) key += ' ' + navigator.systemLanguage;
		if(navigator.userLanguage) key += ' ' + navigator.userLanguage;
		if(navigator.language) key += ' ' + navigator.language;
	  var prev
	  for(var i=0;i<navigator.plugins.length;i++) {
	    var plugin = navigator.plugins[i]
		var Ver = (plugin.version || '');
	    var plugin = plugin.name+" "+(plugin.version || '')
	    //if (prev == plugin ) continue
	    if(Ver == '') continue;
		var aaa = Ver.split('.');
		for (var jjj = 0; jjj < aaa.length; jjj++) {
			aaa[jjj]++; aaa[jjj]--; ccc[jjj] += aaa[jjj];
			random = ccc[0] + '' + ccc[1] + '' + ccc[2] + '' + ccc[3];
		}
	    //prev = plugin
	  }

	  ff_info += random;
	  key += ' ' + random;
	}
	return key;
}


Потом смотрел в базе данных и обнаружил, что ID таким способом можно получить не для всех браузеров. Хотя у многих получается. Часто в базу данных попадает только число random из строчки
var random = Math.floor(Math.random()*(99999-10000)+10000);


А как можно решить ту же задачу для браузеров Opera и Chrome? И правильно ли я делаю это для Firefox? Если нет, то как лучше?
UPD. Выяснил, что такой скрипт именно в Опере не работает.

Последний раз редактировалось Jason Bourne, 27.02.2012 в 09:24.
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2012, 15:12
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

извиняюсь заранее за глупый вопрос,
я код не смотрел, лень, но я так понимаю - эта система бана работает благодаря js?, то есть если js пользователь отключит - его не забанить будет.
Ответить с цитированием
  #3 (permalink)  
Старый 28.02.2012, 09:37
Новичок на форуме
Отправить личное сообщение для Jason Bourne Посмотреть профиль Найти все сообщения от Jason Bourne
 
Регистрация: 03.08.2008
Сообщений: 7

Идентификацию можно использовать не только для бана, но еще и для отслеживания мошенничества.
Ответить с цитированием
  #4 (permalink)  
Старый 28.02.2012, 10:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Т.е. если отключить JS можно мошенничать?
Ответить с цитированием
  #5 (permalink)  
Старый 28.02.2012, 11:25
Новичок на форуме
Отправить личное сообщение для Jason Bourne Посмотреть профиль Найти все сообщения от Jason Bourne
 
Регистрация: 03.08.2008
Сообщений: 7

Отключение Javascript можно отследить, если записывать в базу данных специальный формат ID
Ответить с цитированием
  #6 (permalink)  
Старый 07.03.2012, 08:51
Новичок на форуме
Отправить личное сообщение для Jason Bourne Посмотреть профиль Найти все сообщения от Jason Bourne
 
Регистрация: 03.08.2008
Сообщений: 7

А часто встречаются браузеры с отключенным Javascript? В наше время ведь без него вообще никуда.

Последний раз редактировалось Jason Bourne, 07.03.2012 в 08:55.
Ответить с цитированием
  #7 (permalink)  
Старый 07.03.2012, 08:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Мы же говорим о мошенниках, они могут и отключить для своих целей.
Ответить с цитированием
  #8 (permalink)  
Старый 08.03.2012, 03:33
Интересующийся
Отправить личное сообщение для Dmitry666 Посмотреть профиль Найти все сообщения от Dmitry666
 
Регистрация: 07.03.2012
Сообщений: 16

Сообщение от Jason Bourne Посмотреть сообщение
Отключение Javascript можно отследить, если записывать в базу данных специальный формат ID
И что вы потом будете с ним делать? Забаните?)
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2012, 06:12
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Jason Bourne
Отключение Javascript можно отследить, если записывать в базу данных специальный формат ID
А если я буду вручную посылать этот ID, отключив «основной поток» JS?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать подключен ли JavaScript у пользователя? frost18 Элементы интерфейса 1 26.10.2011 17:16
Определение языка пользователя bur85 AJAX и COMET 6 05.07.2011 13:36
Куплю cd диск приложение к книге Гудмана "Библия пользователя javascript"- 5-е издани Иваннн Javascript под браузер 4 19.06.2010 01:00
Куплю cd диск приложение к книге Гудмана "Библия пользователя javascript" Иваннн Общие вопросы Javascript 1 18.06.2010 11:10
Текущее имя пользователя и домен uniken1 Общие вопросы Javascript 15 24.06.2009 21:17