Я могу считать элементы с помощью jQuery?

ПРАВОВАЯ ОГОВОРКА : Этот ответ был записан в 2008.

С тех пор, PHP дал нам password_hash и password_verify и, начиная с их введения, они - рекомендуемый пароль, хеширующий & проверка метода.

теория ответа является все еще хорошим чтением все же.

TL; DR

Don'ts

  • не ограничивает, какие пользователи символов могут ввести для паролей. Только идиоты делают это.
  • не ограничивают длину пароля. Если Ваши пользователи хотят предложение с supercalifragilisticexpialidocious в нем, не препятствуйте тому, чтобы они использовали его.
  • Никогда не хранят пароль Вашего пользователя в простом тексте.
  • Никогда не посылают пароль по электронной почте Вашему пользователю кроме тех случаев, когда они потеряли их, и Вы отправили временный.
  • Никогда пароли журнала любым способом.
  • Никогда пароли хеша с SHA1 или MD5 или даже SHA256! современные взломщики могут превысить 60 и 180 миллиардов хешей/секунда (соответственно).
  • не смешиваются bcrypt и с сырые данные вывод хеша () , или используют шестнадцатеричный вывод или base64_encode это. (Это относится к любому входу, который может иметь жулик \0 в нем, который может серьезно ослабить безопасность.)

сценарий Использования Dos

  • , когда Вы можете; bcrypt, если Вы не можете.
  • Использование PBKDF2, если Вы не можете использовать или bcrypt или сценарий с хешами SHA2.
  • Измененный общие пароли, когда база данных поставилась под угрозу.
  • Реализация разумная символьная минимальная длина 8-10, плюс требуют по крайней мере 1 прописной буквы, 1 строчной буквы, числа и символа. Это улучшит энтропию пароля, в свою очередь делая его тяжелее для взламывания. (См. раздел "What makes a good password?" для некоторых дебатов.)

, Почему пароли хеша так или иначе?

цель позади хеширования паролей проста: предотвращение злонамеренного доступа к учетным записям пользователей путем заключения компромисса базы данных. Таким образом, цель хеширования пароля состоит в том, чтобы удержать хакера или взломщика путем стоения им слишком большого количества времени или денег для вычисления незашифрованных паролей. И время/стоимость является лучшими средствами устрашения в Вашем арсенале.

Другая причина, что Вы хотите хороший, устойчивый хеш на учетные записи пользователей, состоит в том, чтобы дать Вам достаточно времени для изменения всех паролей в системе. Если Ваша база данных поставится под угрозу, то Вам будет требоваться достаточно времени к в [1 132], наименьшее количество блокирует систему вниз, если не изменяют каждый пароль в базе данных.

Jeremiah Grossman, технический директор безопасности Whitehat, указанный на его блоге после недавнего восстановления пароля, которое потребовало повреждения "в лоб" его защиты паролем:

Интересно, в переживании этого кошмара, я изучил МНОГО я, didn’t знают о взламывании пароля, устройстве хранения данных и сложности. I’ve прибывают для понимания, почему устройство хранения данных пароля настолько более важно, чем сложность пароля. Если Вы, которых знают don’t, как Ваш пароль хранится, то все действительно можно зависеть от, являетесь сложностью. Это могло бы быть общеизвестным к паролю и crypto профессионалам, но для среднего InfoSec или эксперта по безопасности в Интернете, я высоко сомневаюсь относительно него.

(Шахта Emphasis.)

, Что делает хороший пароль так или иначе?

Энтропия . (Не то, чтобы я полностью подписываюсь на точку зрения Randall.)

Короче говоря, энтропия состоит в том, сколько изменения в пароле. Когда пароль является только строчными римскими буквами, это - только 26 символов. Это не много изменения. Алфавитно-цифровые пароли лучше с 36 символами. Но разрешение верхнего регистра и нижнего регистра, с символами, является примерно 96 символами. Это намного лучше, чем просто буквы. Одна проблема, для создания наших паролей незабываемыми, мы вставляем patterns—, который уменьшает энтропию. Ой!

энтропия Пароля , приблизился легко. Используя полный спектр символов ASCII (примерно 96 typeable символов) приводит к энтропии 6,6 на символ, который в 8 символах для пароля является все еще слишком низким (52,679 битов энтропии) для будущей безопасности. Но хорошие новости: более длительные пароли и пароли с unicode символами, действительно увеличивают энтропию пароля и делают ее тяжелее для взламывания.

существует более длительное обсуждение энтропии пароля на сайт Crypto StackExchange . Хороший поиск Google также поднимет много результатов.

В комментариях я говорил с @popnoodles, кто указал, что осуществление политика паролей X длин с X много букв, числа, символы, и т.д., могут на самом деле уменьшить энтропию путем создания схемы пароля более предсказуемой. Я действительно соглашаюсь. Randomess, максимально действительно случайный, всегда является самым безопасным, но наименее незабываемым решением.

, Насколько я был в состоянии сказать, делая лучший в мире пароль, Уловка - 22. Любой не незабываемый, слишком предсказуемый, слишком короткий, слишком много unicode символов (трудно для ввода в Windows/мобильном устройстве), слишком долго, и т.д. Никакой пароль не действительно достаточно хорош в наших целях, таким образом, мы должны защитить их, как будто они были в Форт-Ноксе.

Лучшие практики

Bcrypt и сценарий текущие лучшие практики. Scrypt будет лучше, чем bcrypt вовремя, но это не рассматривало принятие как стандарт Linux/Unix или веб-серверами, и еще не имело всесторонних обзоров его алгоритма, отправленного. Но тем не менее, будущее алгоритма действительно выглядит многообещающим. Если Вы работаете с Ruby существует драгоценный камень сценария , который выручит Вас, и Node.js теперь имеет свое собственное пакет сценария . Можно использовать Scrypt в PHP или через расширение Scrypt или расширение Libsodium (оба доступны в PECL).

я высоко предлагаю читать документацию для функция склепа , если Вы хотите понять, как использовать bcrypt или нахождение себя хороший обертка или использовать что-то как [1 121] PHPASS для реализации более прежней версии. Я рекомендую минимум 12 раундов bcrypt, если не 15 - 18.

я передумал об использовании bcrypt, когда я узнал, что bcrypt только использует ключевое расписание шифров с механизмом переменной стоимости. Последний позволяет Вам увеличить стоимость для "в лоб" пароль путем увеличения уже дорогого ключевого расписания шифров.

Средние методы

я почти не могу больше воображать эту ситуацию. PHPASS поддерживает PHP 3.0.18 до 5,3, таким образом, это применимо почти на каждой установке imaginable— и должно использоваться, если Вы не делаете , знают для определенного что Ваша поддержка сред bcrypt.

, Но предполагают, что Вы не можете использовать bcrypt или PHPASS вообще. Что тогда?

Попытка реализация [1 123] PDKBF2 с максимальное количество раундов , который может терпеть Ваш environment/application/user-perception. Самое низкое количество, которое я рекомендовал бы, является 2 500 раундами. Кроме того, удостоверьтесь, что использовали hash_hmac () , если это доступно для создания операции тяжелее для репродуцирования.

будущие Методы

Прибытие в PHP 5.5 полная библиотека защиты паролем что краткие обзоры далеко любые боли работы с bcrypt. В то время как большинство из нас застревает с PHP 5.2 и 5.3 в наиболее распространенных средах, особенно совместно использованных хостах, @ircmaxell создал уровень совместимости для ближайшего API, который обратно совместим к PHP 5.3.7.

Резюме Криптографии & Правовая оговорка

Вычислительная мощность, требуемая к на самом деле трещина хешированный пароль, не существует. Единственный путь к компьютерам для "взламывания" пароля состоит в том, чтобы воссоздать его и моделировать алгоритм хеширования, используемый для обеспечения его. Скорость хеша линейно связана со своей способностью, которая будет вынуждена скотами. Что еще хуже, большинство хеш-алгоритмов может быть легко параллелизировано для выполнения еще быстрее. Поэтому дорогостоящие схемы как bcrypt и сценарий так важны.

Вы не можете возможно предвидеть все угрозы или пути нападения, и таким образом, необходимо приложить максимальное усилие для защиты пользователей честный . Если Вы не делаете, то Вы могли бы даже пропустить то, что Вы подверглись нападению, пока не слишком поздно... и Вы ответственны . Избегать что ситуация, действие, параноидальное для начала. Нападите на свое собственное программное обеспечение (внутренне) и попытайтесь украсть удостоверения пользователя, или изменить учетные записи другого пользователя или получить доступ к их данным. Если Вы не тестируете безопасность своей системы, то Вы не можете обвинить никого, но Вас.

Наконец: Я не шифровальщик. Независимо от того, что я сказал, мое мнение, но я, оказывается, думаю, что оно основано на старом добром здравом смысле... и большом чтении. Помните, быть максимально параноидальными, сделать вещи максимально трудно для внедрения, и затем, если Вы все еще волнуетесь, свяжитесь с хакером белой шляпы или шифровальщиком для наблюдения то, что они говорят о коде/системе.

5
задан Jim Puls 25 July 2009 в 04:54
поделиться

3 ответа

Да, есть, он называется : nth-child .

Пример:

$("ul li:nth-child(16n)").addClass("sixteenth");
11
ответ дан 13 December 2019 в 05:40
поделиться

Вы можете попробовать функцию .each :

$("ul li").each(function(index, domEle) {
    if (index%16==0) {
          $(domEle).addClass("CLASS_NAME");
    }
});
1
ответ дан 13 December 2019 в 05:40
поделиться

Если вы хотите применить класс к каждому элементу после 16 th , вы можете использовать селектор : gt (index) .

$("ul li:gt(16)").addClass("CLASS_NAME");

помните: В селекторах gt,: lt и т. д. используется индекс, отсчитываемый от нуля.

для каждых 16 th , конечно, вы можете использовать : nth-child (index)

$("ul li:nth-child(16)").addClass("CLASS_NAME");

запомнить : nth-child селекторы используют 1 для первого элемента.

0
ответ дан 13 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: