Архив метки: проверка пароля

JavaScript: Проверка пароля на сложность

Задача: необходимо проверить пароль на сложность по критериям:

  •  есть маленькие буквы
  • есть большие буквы
  • есть специальные символы
  • пароль длиннее 7 символов

Ну в принципе подойдет чтото-вроде:

function PasswordValidTest(pass){
        var count = 0;    
        count += /[a-z]/.test(pass) ? 1 : 0; //есть маленькие буквы
        count += /[A-Z]/.test(pass) ? 1 : 0; //есть большие буквы
        count += /\d/.test(pass) ? 1 : 0;   
        count += /[^\w\d\s]/.test(pass) ? 1 : 0;
        (count>2 & !/[\s]+/.test(pass)) ? res=true:res=false;    
        if ((res==true)&&(pass.length<7)) res=false;
     return res;   
}

Ну и в нагрузку проверка Email:

function EmailValidTest(email){
 var re = /^[\w-\.]+@[\w-]+\.[a-z]{2,4}$/i;   
 return re.test(email);
};
function EmailValidRulesTest(email){
  validmails=['@mail.ru','@yandex.ru','@ya.ru','@list.ru','@inbox.ru','@gmail.com','@icloud.com','@bk.ru'];  
  re=false;  
  validmails.forEach(function(item, i, validmails){
    if (email.indexOf(item)!==-1) re=true;
  });   
  return re;
};

1С: проверка вилидности email и пароля

Ну например можно организовать вот так:

Функция ПарольСоответствуетТребованиям (Пароль) экспорт
	УстановитьПроверкуСложностиПаролейПользователей(Истина);
	ВременныйПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
	ВременныйПользовательИБ.АутентификацияСтандартная = Истина;
	ВременныйПользовательИБ.Имя = НСтр("ru = 'Временный пользователь'")+
	" (" + Строка(Новый УникальныйИдентификатор) + ")";
	ВременныйПользовательИБ.Пароль = Пароль;
	ХорошийПароль = Истина;
	Попытка
		ВременныйПользовательИБ.Записать();
	Исключение
		ХорошийПароль = Ложь;
	КонецПопытки;
	ВременныйПользовательИБ.Удалить();
Возврат ХорошийПароль;
КонецФункции
Функция ПроверкаВалидностиEmail(Адрес) Экспорт
    ЛатинскиеБуквы = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Цифры = "0123456789";
    //ищем крайний справа символ @ для правильного выделения локальной и доменной части
    ИндексСобаки = Найти(Адрес,"@");
    //1. строка адреса вообще не содержит разделителя
    Если ИндексСобаки = 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    УрезаемаяСтрока = Сред(Адрес, ИндексСобаки+1);
    Пока Найти(УрезаемаяСтрока,"@") > 0 Цикл
        ИндексСобаки = ИндексСобаки + Найти(УрезаемаяСтрока,"@");
        УрезаемаяСтрока = Сред(УрезаемаяСтрока, ИндексСобаки+1);
    КонецЦикла;
    ДоменнаяЧасть = Сред(Адрес, ИндексСобаки+1);
    ЛокальнаяЧасть = Лев(Адрес, ИндексСобаки-1);
    //2. Проверяем длину локальной части
    Если СтрДлина(ЛокальнаяЧасть) < 1 ИЛИ СтрДлина(ЛокальнаяЧасть) > 64 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //3. Проверяем длину доменной части
    Если СтрДлина(ДоменнаяЧасть) < 1 ИЛИ СтрДлина(ДоменнаяЧасть) > 255 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //4. Проверяем что локальная части не начинается и не заканчивается на "."
    Если Лев(ЛокальнаяЧасть, 1) = "." ИЛИ Прав(ЛокальнаяЧасть, 1) = "." Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //5. Локальная части не содержит 2 или более "." подряд
    Если Найти(ЛокальнаяЧасть, "..") > 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //Проверка доменной части
    //6. Доменная часть не начинается с точки
    Если Лев(ДоменнаяЧасть, 1) = "." Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //7. Доменная часть не содержит 2 или более "." подряд
    Если Найти(ДоменнаяЧасть, "..") > 0 Тогда
        Возврат ЛОЖЬ;
    КонецЕсли;
    //8. Проверка частей доменной части
    //каждая часть начинается с буквы и заканчивается буквой или цифрой
    //каждая часть длиной не более 63 символов
    ИдентификаторыДоменнойЧасти = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДоменнаяЧасть, ".");
    Для Каждого ИдентификаторДомена ИЗ ИдентификаторыДоменнойЧасти Цикл
        Если СтрДлина(ИдентификаторДомена) > 63 Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
        Если Найти(ЛатинскиеБуквы, Лев(ИдентификаторДомена,1)) = 0
            //для доменов, нарушающих RFC 1035 п.2.3.1, например @1c.ru :)
            И Найти(Цифры, Лев(ИдентификаторДомена,1)) = 0
            Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
        Если Найти(ЛатинскиеБуквы, Прав(ИдентификаторДомена,1)) = 0 И Найти(Цифры, Прав(ИдентификаторДомена,1)) = 0 Тогда
            Возврат ЛОЖЬ;
        КонецЕсли;
    КонецЦикла;
    //Все проверки пройдены - радуемся
    Возврат ИСТИНА;
КонецФункции