Вот несколько известных библиотек, которые обрабатывают обнаружение браузера.
console.log(bowser);
document.write("You are using " + bowser.name +
" v" + bowser.version +
" on " + bowser.osname);
]
console.log(platform);
document.write("You are using " + platform.name +
" v" + platform.version +
" on " + platform.os);
var result = detect.parse(navigator.userAgent);
console.log(result);
document.write("You are using " + result.browser.family +
" v" + result.browser.version +
" on " + result.os.family);
console.log($.browser)
document.write("You are using " + $.browser.name +
" v" + $.browser.versionNumber +
" on " + $.browser.platform);
Вот наборы символов, которые Steve Gibson использует для его "Идеальный Бумажный Пароль" система. Они - "символы, чтобы позволить", а не "символы избегать", но они кажутся довольно разумными для того, что Вы хотите:
стандартный набор А 64 символов
!#%+23456789:=?@ABCDEFGHJKLMNPRS
TUVWXYZabcdefghijkmnopqrstuvwxyz
А больший набор 88 символов
!"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHJKLMNO
PRSTUVWXYZ[\]^_abcdefghijkmnopqrstuvwxyz{|}~
Для удобопроизносимых паролей, я не знаком с алгоритмами, но Вы могли бы хотеть посмотреть APG и pwgen как начальная точка.
Мой предпочтительный метод состоит в том, чтобы получить список слов 3, 4 и 5 слов буквы. Тогда выберите по крайней мере 2 из тех и поместите случайные 2 символа числа цифры или специальный символ (% & * # $) между каждым словом. Если Вы хотите Вам, может использовать для своей выгоды до одного символа на слово наугад.
В зависимости от Ваших требований к силе Вы заканчиваете с легким, чтобы помнить и передаете пароли как:
Имеет в виду, что Вы иногда получаете интересные или несоответствующие комбинации слов (я позволю Вам использовать свое воображение). У меня обычно есть кнопка, позволяющая поколение нового пароля, если представленный тот не понравился.
, Как правило, только используйте символы, которых люди обычно знают название. На американской Стандартной клавиатуре я избежал бы ~ ''/\^
, я предполагаю это более отвеченное Ваш вопрос наездника, чем Ваш основной вопрос...
Удачи!
Читайте Безопасные пароли .
ВыбораОдин интересный лакомый кусочек оттуда: Для большего количества безопасных паролей удостоверьтесь, некоторые числа и специальные символы появляются в середине. Взламывание проверки программ на них вначале и заканчивается раньше.
Для добавления к ответу Jim, Вы могли также использовать список слов и случайным образом заменить определенные символы символами (для A, 0 (нуль) для O или 5 для S) и/или удалить гласные из слов.
, Все еще главным образом человекочитаемый.
Как другая опция, Вы могли использовать моноширинный/терминальный шрифт как курьер для печати паролей. Подобные символы должны быть намного более различимыми тот путь.
Для международного клиента несколько лет назад, я должен был генерировать случайные, безопасные пароли, которые были тогда объединены с почтой в документы моего клиента и отправлены почтовой почтой получателям в 40 странах. Не зная, какая гарнитура должна была использоваться в документах, я использовал список символов как Steve Gibson с 64 символами набор для устранения беспорядка между подобными глифами.
Для создания получающихся паролей удобопроизносимыми, и таким образом легче помнить я соединил согласные и гласные вместе, с некоторыми совместимыми диграфами (sh, th, wh, и т.д.) добавленный к соединению.
Для сокращения возможностей несоответствующих или оскорбительных слов от того, чтобы быть сгенерированным (на английском языке или на recipients’ языках) я ограничил выполнения последовательных альфа-символов к два с цифрами или знаками пунктуации betwee:
Es4tU$sA6
wH@cY8Go2
Оглядывание назад по моему методу теперь, я понимаю, что был простор для совершенствования в алгоритме неуместности. Используя справедливое правила выше, некоторые оскорбительные слова возможны теперь, когда некоторыми цифрами и пунктуацией заменяют буквы.
Для человекочитаемых паролей я недавно использовал Сценарий PHP, очень похожий на тот ниже. Это работало хорошо. Предоставленный, пароли не будут невероятно безопасными (поскольку они подвержены атакам с подбором по словарю), но для memorisable, или по крайней мере читаемый, пароли, это работает хорошо. Однако эта функция не должна быть использована как есть, это больше для иллюстрации, чем что-либо еще.
function generatePassword($syllables = 2, $use_prefix = true)
{
// Define function unless it is already exists
if (!function_exists('arr'))
{
// This function returns random array element
function arr(&$arr)
{
return $arr[rand(0, sizeof($arr)-1)];
}
}
// Random prefixes
$prefix = array('aero', 'anti', 'auto', 'bi', 'bio',
'cine', 'deca', 'demo', 'dyna', 'eco',
'ergo', 'geo', 'gyno', 'hypo', 'kilo',
'mega', 'tera', 'mini', 'nano', 'duo',
'an', 'arch', 'auto', 'be', 'co',
'counter', 'de', 'dis', 'ex', 'fore',
'in', 'infra', 'inter', 'mal',
'mis', 'neo', 'non', 'out', 'pan',
'post', 'pre', 'pseudo', 'semi',
'super', 'trans', 'twi', 'vice');
// Random suffixes
$suffix = array('dom', 'ity', 'ment', 'sion', 'ness',
'ence', 'er', 'ist', 'tion', 'or',
'ance', 'ive', 'en', 'ic', 'al',
'able', 'y', 'ous', 'ful', 'less',
'ise', 'ize', 'ate', 'ify', 'fy', 'ly');
// Vowel sounds
$vowels = array('a', 'o', 'e', 'i', 'y', 'u', 'ou', 'oo', 'ae', 'ea', 'ie');
// Consonants
$consonants = array('w', 'r', 't', 'p', 's', 'd', 'f', 'g', 'h', 'j',
'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'qu');
$password = $use_prefix?arr($prefix):'';
$password_suffix = arr($suffix);
for($i=0; $i<$syllables; $i++)
{
// selecting random consonant
$doubles = array('n', 'm', 't', 's');
$c = arr($consonants);
if (in_array($c, $doubles)&&($i!=0)) { // maybe double it
if (rand(0, 2) == 1) // 33% probability
$c .= $c;
}
$password .= $c;
//
// selecting random vowel
$password .= arr($vowels);
if ($i == $syllables - 1) // if suffix begin with vovel
if (in_array($password_suffix[0], $vowels)) // add one more consonant
$password .= arr($consonants);
}
// selecting random suffix
$password .= $password_suffix;
return $password;
}
Я не люблю подход списка слов. Например, в/usr/share/dict/words на OSX, существует 5 110 слов с 4 символами. Используя двух из них с разделителем символ производит ~600M комбинации. Но если бы Вы использовали набор символов непосредственно с сильным генератором случайных чисел, то Вы имели бы 88^9 возможные пароли, 3.16e+17 комбинации.
Так или иначе, вероятное нападение на эту систему будет против генератора случайных чисел, поэтому удостоверьтесь, что Вы используете криптографически сильный. При использовании стандартной функции рэнда PHP она подвергнется нападению путем регистрации, и сброс тысяч паролей для выборки RNG указывает и затем предсказывает остающееся состояние RNG, которое сократит количество возможных паролей, которые должен протестировать взломщик.
В моем (электротехника, техник) аспирантура, все учетные записи компьютера были инициализированы с паролями, которые, я принимаю, были сгенерированы стандартной утилитой Linux. Они состояли из трех случайных слогов с тремя строчными буквами в каждом слоге. Результат был довольно безопасен (на порядке миллиардов возможных комбинаций) все же столь удобопроизносимый, что я все еще использую некоторые из тех паролей более чем десятилетие спустя. Примером заторов является превосходная демонстрация этого.
А комментируют пароли в целом от профессионала сетевой безопасности: они ужасны, по нескольким причинам, включая:
Обычно легко поврежденный, или через социальную инженерию или с программным обеспечением нападения, особенно если Вы знаете что-нибудь о Вашей цели.
Пример 1: я недавно должен был пересмотреть защищенный паролем технический документ. Смотря на дату, я знал, кем наш Технический писатель в местонахождении был в то время, ввел первое слово, которое ввело мой ум и сразу разблокировало документ.
Пример 2: Стандартные взламывающие пароль программы позволяют взломщику определять ряд правил, которые воздействуют на предоставленный пользователями словарь. Это тривиально, чтобы заменить определенные буквы $ymb01$ или перевести в 1337, и т.д.
, "Безопасные" пароли не. Учитывая чистое количество паролей большинство людей должно помнить, наиболее распространенный способ "помнить" a "сильный" пароль как "a4$N! 8_q" должен записать это на листке бумаги (или, хуже, сохранить его в текстовом файле). 'Nuff заявил.
, Если Вам нужно действительно безопасный аутентификация, , мультифактором (или с двумя факторами ) является принятый промышленностью механизм. "Два фактора" обычно являются чем-то, что Вы имеете (такие как плата доступа) и что-то, что Вы знаете , который включает ее (такие как PIN). Никакой не работает без другого - Вам нужны оба.
, С другой стороны, рассмотрите уровень безопасности, в которой Вы действительно нуждаетесь. Что Вы защищаете? Как плохо делают "плохие парни" хотят получить его, и каковы последствия, если они делают? Возможности, "Its@Secret!" более, чем достаточно хорошо.:-)
Стартовый подход мог бы быть должен генерировать главным образом допустимые английские слоги, смешать их, затем добавить текст-> l33t преобразование. Была работа, сделанная на грамматиках естественного языка поколений, таким образом, один из тех мог бы помочь.
, Например, ах луг ул. является всеми допустимыми слогами, или близко к нему... смешивают их-> Ingulah... l33t он-> 1ngu4 h. Действительно ли это является лучшим там? Nah. Но по крайней мере это semipronouncable (если Вы говорите l33t), и более защищенный по вычислениям.
Если вас интересует генерация произносимых паролей, есть порт C# по адресу: http://www.hoogervorst.ca/arthur/?attachment_id=1708
В коде вы найдете полезные ссылки для получения дополнительной информации. http://www.multicians.org/thvv/gpw.html
Удачи. James