Недавно активные «scrypt» вопросы
Golang криптографические несколько вызовов имеют разные ответы
У меня возникли проблемы с некоторыми Go кода я написал для библиотеки аутентификации пароля. Общая идея состоит в том, чтобы обеспечить 2 функции, Check () и новый (), которые, как при условии пароля и 256 битного ключа HMAC. Функция Check () также предусмотрена 256 битной соль и 256 битного хэш, и возвращает логическое значение. Функция New () возвращает новую, случайную соль, и это соответствующий хэш. Обе функции полагаются на вспомогательную функцию, хэш (), который использует Scrypt для ключа удлинению, и делает реальную работу генерации выходного хэш. Это работает, когда я первоначально написал (о чем свидетельствует тот факт, что я рабочий тестовые данные, порождаемые ранее, потерял пересмотр кода). Проблема у меня теперь есть, что функция Check (), кажется, работает отлично при условии, с данными, порождаемыми старой версией коды, но теперь, похоже, не в состоянии с любыми данными, порождаемыми собственной функцией кодекса Нового () (который, как использовать функцию основного хэша ()).
1.45106$ | Получена выплата | 1.45106 USD (0.00621794 BTC) | Вчера 19:43 |
2.6114$ | Получена выплата | 2.6114 USD (0.01134103 BTC) | 24 Сентября 2015 08:57 |
1.22041$ | Получена выплата | 1.22041 USD (0.00534432 BTC) | 22 Сентября 2015 18:35 |
1.24423$ | Получена выплата | 1.24423 USD (0.00548866 BTC) | 21 Сентября 2015 19:28 |
0.01$ | Увеличение депозита | Перезапуск монитора выплат | 20 Сентября 2015 18:39 |
2. 88129$ | Получена выплата | 2.88129 USD (0.012501 BTC) | 20 Сентября 2015 18:39 |
1.3125$ | Получена выплата | 1.3125 USD (0.00568296 BTC) | 18 Сентября 2015 18:59 |
1.53846$ | Получена выплата | 1.53846 USD (0.00670986 BTC) | 17 Сентября 2015 17:37 |
1.35442$ | Получена выплата | 1.35442 USD (0.00595853 BTC) | 16 Сентября 2015 17:07 |
1.45141$ | Получена выплата | 1.45141 USD (0.00634358 BTC) | 15 Сентября 2015 17:16 |
1.49706$ | Получена выплата | 1.49706 USD (0.00653888 BTC) | 14 Сентября 2015 16:43 |
3.15445$ | Получена выплата | 3.15445 USD (0.01351314 BTC) | 13 Сентября 2015 11:16 |
3.19649$ | Получена выплата | 3. | 11 Сентября 2015 16:39 |
1.55503$ | Получена выплата | 1.55503 USD (0.00659179 BTC) | 09 Сентября 2015 15:59 |
1.6552$ | Получена выплата | 1.6552 USD (0.00682572 BTC) | 08 Сентября 2015 09:14 |
1.6492$ | Получена выплата | 1.6492 USD (0.00679663 BTC) | 07 Сентября 2015 08:16 |
1.38421$ | Получена выплата | 1.38421 USD (0.00590726 BTC) | 06 Сентября 2015 11:46 |
2.99541$ | Получена выплата | 2.99541 USD (0.01325422 BTC) | 05 Сентября 2015 09:44 |
1.4853$ | Получена выплата | 1.4853 USD (0.00661838 BTC) | 03 Сентября 2015 20:05 |
1.43698$ | Получена выплата | 1.43698 USD (0.00640634 BTC) | 02 Сентября 2015 16:04 |
1. 40869$ | Получена выплата | 1.40869 USD (0.00626423 BTC) | 01 Сентября 2015 14:31 |
3.00525$ | Получена выплата | 3.00525 USD (0.01335291 BTC) | 31 Августа 2015 10:04 |
1.58258$ | Получена выплата | 1.58258 USD (0.00693675 BTC) | 29 Августа 2015 10:11 |
2.83495$ | Получена выплата | 2.83495 USD (0.01266892 BTC) Саппорт ответил, сайт работает. Вернул к зелёным. | 28 Августа 2015 11:53 |
0$ | Заметка при сверке | Сайта нет, перевожу в ожидание выплат | 28 Августа 2015 11:08 |
1.49035$ | Получена выплата | 1.49035 USD (0.00662802 BTC) | 26 Августа 2015 16:22 |
1.39682$ | Получена выплата | 1.39682 USD (0.00659174 BTC) | 25 Августа 2015 16:51 |
1. 54364$ | Получена выплата | 1.54364 USD (0.0070647 BTC) | 24 Августа 2015 10:54 |
1.49663$ | Получена выплата | 1.49663 USD (0.00660572 BTC) | 23 Августа 2015 08:38 |
1.74499$ | Получена выплата | 1.74499 USD (0.00764111 BTC) | 22 Августа 2015 11:20 |
1.7818$ | Получена выплата | 1.7818 USD (0.00768023 BTC) | 21 Августа 2015 10:10 |
1.52927$ | Получена выплата | 1.52927 USD (0.00671649 BTC) | 20 Августа 2015 08:53 |
464.75334$ | Увеличение депозита | 464.75334 USD (2.04 BTC). 1.02 GH/s SHA-256 | 19 Августа 2015 12:01 |
Весь список Свернуть список |
Крипто терминология: объясняем SHA-256
С данной публикации мы начинаем цикл коротких статей, которые выйдут «в свет» в течение ближайших дней. Содержание этого цикла статей будет в основном посвящено различным типам алгоритмов шифрования. Мы дадим вам полное представление того, что представляют собой крипто-алгоритмы, что они означают, какие из цифровых монет первыми пришли к идее реализации данных алгоритмов и ответим на ряд других вопросов. Сегодня мы начнем с SHA-256, который, возможно, встречался большинству, если не всем вам, дорогие наши читатели.
Так что же это такое SHA-256? Как уже упоминалось ранее, это алгоритм. Если быть более точным, то это криптографическая хэш-функция, которая была разработана вашими и моими «друзьями» – Агентством национальной безопасности США. Подождите, не спешите впадать в прострацию, здесь не о чем волноваться. Потерпите немного, обещаю, что скучать вы точно не будете.
Основная работа этой хэш-функции заключается в превращении (или хэшировании) набора элементов данных в значение фиксированной длины. Это значение длины будет сравниваться с копиями исходных данных, без возможности извлечения этих исходных данных. Это официальное объяснение, выложенное в Википедии, замечательное и научно-обоснованное, но вот только я, например, не говорю на таком языке. И уверен, что большинство из вас тоже. А посему, позвольте мне объяснить значение этого «феномена», по-нашему, по-простому.
Как мы все знаем, при майнинге SHA-256 монет, мы решаем поставленную задачу при помощи процессора CPU или GPU. Процессы преобразования отображаются в интерфейсе программы, предназначенной для майнинга, например, в виде строки «Accepted 0aef41a3b». Значение 0aef41a3b — это и есть хэш. Он представляет собой кусок данных для раскодирования, которому соответствует полученный хэш-код. Если еще проще, то это короткая строка расшифрованных данных, тогда как основной кусок (или блок) данных состоит из нескольких тысяч, если не миллионов, подобных строк.
Это также объясняет то, почему вам обычно нужно решить множество задач, прежде чем удастся отыскать нужный блок вашей монеты. У вас имеется один шанс на тысячу, десять тысяч, сто тысяч или даже миллион решений того, что раскодированная строка будет иметь ТОЧНОЕ значение, необходимое для разблокировки, или это будут мои данные (или блока). Это похоже на игру в лотерею, но с машинами, которые могут выполнять вычисление выигрышной комбинации быстрее и лучше, чем любой из нас.
Вы считаете, что для решения задач, связанных с хэшированием при использовании протокола SHA-256, вам потребуется мощное аппаратное обеспечение? В этом есть определенный смысл. Чем больше используется вычислительной мощности, тем лучше, так как увеличиваются шансы на добычу монет. Но имейте в виду, что вы не единственный, кто занимается майнингом. Есть люди, которые располагают более производительным аппаратным обеспечением. Не расстраивайтесь, у вас есть все шансы на выигрыш. Это похоже на игру в лотерею, вы никогда не знаете, когда повезет!
Теперь вернемся к алгоритму SHA-256. Криптовалюта — это не единичный пример, где используется SHA-256. Есть несколько протоколов, о которых вы, скорее всего, слышали и которые работают по схожему алгоритму. Это протоколы SSL, SSH, PGP и многие другие. Каждый раз, когда вы заходите на защищенный веб-сайт с помощью сертификата SSL, используется SHA-256. Бьюсь об заклад, вы не задумывались об этом, не так ли? Все мы узнаем что-то новое со временем!
Итак, давайте поговорим о протоколе SHA-256! У вас наверняка есть биткоин, который является самой известной альтернативной валютой на сегодняшний день. Но это не повод останавливаться на достигнутом. В последнее время наблюдается всплеск новых SHA-256 монет: Zetacoin, Ocoin, Tekcoin и др. Но мы также не можем забывать про те монеты, которые были запущены ранее, например, NameCoin и т.д.
В следующей статье мы рассмотрим особенности работы алгоритма Scrypt!
Алгоритм криптовалюты – почему это важно для майнинга
Различные типы алгоритмов майнинга криптовалюты
Задавали ли вы когда-нибудь такие вопросы: «Что такое алгоритм в криптовалюте? Что такое алгоритмы майнинга? Какой алгоритм используется в Биткоине? Почему для криптовалюты важно иметь алгоритм хеширования?»
Если да, то вы находитесь в нужном месте. У нас есть подробная статья о том, как работает майнинг, и какова роль алгоритма в криптовалютах.
Криптовалюты, как правило, являются децентрализованными виртуальными валютами. Они не существуют в физическом пространстве.
И по большей части они даже не полагаются на какие-либо физические объекты для определения их стоимости. Цена криптовалюты зависит от спроса и предложения.
Дело в том, что у криптовалют фиксированный объём денежной массы, в отличие от фиатных валют.
Кроме того, фиатные или традиционные валюты контролируются соответствующими правительствами.
Правительственные органы обладают властью создавать новые единицы, а также уничтожать их при необходимости.
В традиционной экономике также существуют центральные банки. Эти банки регулируют поток денежных единиц. Они также поддерживают централизованный валютный реестр для расчётов по транзакциям.
Но, как уже говорилось выше, криптовалюты являются децентрализованными. Это значит, что ни один конкретный орган не имеет права управлять криптовалютой. У каждого криптовалютного инвестора есть право голоса.
Кроме того, криптовалюты обычно имеют публичные реестры, легко доступные для любого человека. У криптовалют нет централизованных учреждений, таких как банки.
Но криптовалютам также необходим механизм проверки транзакций.
Этот процесс может выполняться двумя способами
- Первый – это использование алгоритма Proof of work и майнеров для проверки и добавления транзакций в блокчейн.
- Второй – с помощью алгоритма Proof of stake и валидаторов, которые голосуют за достижение консенсуса.
В этой статье мы рассмотрим только майнинг. И поговорим о разных алгоритмах майнинга, используемых популярными монетами.
Что такое майнинг криптовалюты
Для криптовалюты, которая использует Proof of work для проверки транзакций, процесс майнинга является критически важным. Без этого транзакции будут оставаться незавершёнными.
Кроме того, криптовалютные майнеры генерируют новые единицы монеты.
Майнеры – это специальные ноды в криптовалютной сети. У них имеется специализированное оборудование для решения чрезвычайно сложных математических задач.
И майнер с лучшим решением получает награду. В случае Bitcoin в настоящее время её размер составляет 12,5 BTC за блок.
Процесс майнинга является очень сложным. Но мы изо всех сил постараемся изложить его самыми простыми словами.
Прежде всего, криптовалютная сеть собирает все транзакции, выполненные за определённый период.
Из этих транзакций создаётся блок. В сети Bitcoin генерация блока длится 10 минут. В случае более новых альткоинов, таких как Monero, этот процесс занимает 1 минуту. А у криптовалюты Verge – всего 30 секунд!
Биткоин может обрабатывать блоки размером до 1 МБ. Но более новые криптовалюты поддерживают размер блока до 8 МБ.
Каждый раз, когда сеть генерирует новый блок транзакций, она объявляет о создании блока майнерам. Затем начинается настоящая борьба.
Используя необработанные данные из блока (данные транзакций), а также информацию из предыдущего блока, майнеры генерируют хеши.
За счёт использования данных из предыдущего блока, новый блок связывается с предыдущим, чтобы продолжить цепочку блокчейн. Хеши генерируются с использованием криптографического алгоритма.
При их создании майнеры используют также другую часть данных. Эти данные являются случайными и могут изменяться – их называют NONCE или числом, которое можно использовать только один раз.
Вы знаете, что каждая криптовалютная сеть имеет собственные требования относительно того, как должен выглядеть хеш.
Поэтому майнерам необходимо найти хеш, который идеально соответствует требованиям сети. Эти требования изменяются после генерации каждого нового блока.
Майнеры не могут манипулировать ни деталями транзакции, ни данными из предыдущего блока. Но можно без проблем использовать новый NONCE, если генерируемый хеш не соответствует требованиям.
Майнер, который генерирует соответствующий хеш раньше остальных, получает вознаграждение. После этого сеть добавляет сгенерированный блок в блокчейн.
Именно так работает процесс майнинга, если заглянуть внутрь.
Разные алгоритмы майнинга/хеширования
Теперь, когда вы знаете, как работает весь процесс майнинга криптовалют, давайте разберёмся в различных алгоритмах хеширования.
Классификация алгоритмов
Алгоритм SHA-256
Итак, что такое sha-256?
SHA-256 – самый широко используемый и чрезвычайно популярный алгоритм хеширования. Он был разработан Агентством национальной безопасности Соединенных Штатов.
Помимо криптовалют, SHA-256 также используется во многих других технологиях. Некоторые широко используемые приложения и протоколы безопасности, такие как TLS, SSL, PGP, SSH, также используют SHA.
SHA расшифровывается как Secure Hash Algorithm (Безопасный алгоритм хеширования). В стандарте SHA-256 генерируется 256-битный хеш.
Таким образом не только шифруются данные, но также стандартизируется размер.
На самом деле, это относится ко всем алгоритмам хеширования.
Хешрейт для SHA-256 обычно вычисляется в гигахешах в секунду или GH/s.
В основном известен как алгоритм майнинга биткоина.
Монеты, которые используют этот алгоритм
Биткоин, прародитель всех криптовалют, использует алгоритм SHA-256. Помимо биткоина, SHA-256 также используют многие другие криптовалюты такие как Bitcoin Cash, Peercoin, Namecoin, Devcoin и Terracoin.
Особенности майнинга
Когда биткоин только появился на свет в 2009 году, конкуренция в области майнинга была крайне низкой. Причина в том, что монету использовало очень мало людей, и ещё меньше занималось её майнингом.
Таким образом, в те дни любой владелец компьютера мог использовать свой процессор для майнинга. Но потом некоторые люди поняли, что при майнинге с использованием графического процессора хешрейт получается выше.
Когда конкуренция в сфере майнинга с использованием GPU стала очень высокой, эксперты начали искать более эффективное оборудование. Так появились майнеры FPGA. Но они тоже были не очень эффективными.
Поэтому через какое-то время их заменили ASIC‘и. ASIC расшифровывается как интегральная схема специального назначения (Application Specific Integrated Circuit).
Они разрабатываются для выполнения только одной задачи: в данном случае, это майнинг определённой криптовалюты.
С тех пор оборудование на базе ASIC продолжает доминировать в отрасли майнинга Bitcoin. Поэтому, если вы хотите заняться майнингом биткоина, вам придется купить майнер ASIC.
Китайская компания Bitmain производит самые эффективные ASIC-майнеры для Bitcoin под названием Antminer.
Вы также можете попробовать приобрести контракт на облачный майнинг в таких проверенных компаниях, как Hashflare, Genesis Mining, Hashnet и т. д.
Стоит ли начинать майнинг по этому алгоритму
По нашему мнению, новичкам в сфере майнинга следует избегать криптовалют, использующих SHA-256. Дело в том, что размер первоначальных инвестиций огромен.
Кроме того, ASIC’и генерируют много тепла, поэтому вам понадобятся эффективные системы охлаждения.
Они также потребляют огромное количество электроэнергии. Так что заходите в эту сферу только в том случае, если вы можете себе всё это позволить.
Если у вас есть деньги, и вы хотите рискнуть, то купите лучше контракт на облачный майнинг. Потому что с этим будет намного меньше хлопот.
Алгоритм SCRYPT
Scrypt – это ещё один очень популярный алгоритм хеширования. Большинство прямых последователей Биткоин использовало этот алгоритм. Он требует намного больше памяти, чем SHA-256.
Это очень сильно уменьшает вероятность атак с использованием специального оборудования.
Поскольку алгоритм Scrypt является более требовательным к памяти, для него сложнее разрабатывать майнеры ASIC. Хешрейт майнинга Scrypt обычно обозначается с использованием единицы MH/s.
Монеты, которые используют этот алгоритм
Litecoin, непосредственный преемник биткоина, в качестве своего алгоритма хеширования использует именно Scrypt.
Другие популярные валюты, такие как Dogecoin, Novacoin, WorldCoin, Latium, DigitalCoin и так далее, тоже используют Scrypt.
Особенности майнинга
Как и случае SHA-256, майнинг Scrypt можно осуществлять с помощью процессоров и видеокарт. Но это совершенно не выгодно. Самый выгодный способ майнинга – с использованием установок ASIC.
Для майнинга по алгоритму Scrypt доступно множество ASIC’ов. Самыми популярными являются устройства от Antminer, A2 Mega, Gridseed и так далее.
Стоит ли начинать майнинг по этому алгоритму
Мы не рекомендуем заниматься майнингом криптовалют на основе Scrypt так же, как и на базе SHA-256.
Кинжал Хашимото – алгоритм Ethash
Алгоритм Ethash или «Кинжал Хашимото» (Dagger Hashimoto) был разработан специально для Ethereum. Алгоритм использует два разных алгоритма хеширования – Dagger от Виталика Бутерина и Hashimoto (hash, shift, modulo) Тадеуша Дрийя.
Алгоритм Dagger – это требовательный к памяти алгоритм хеширования, похожий на Scrypt. Но он работает лучше, чем Scrypt, когда сложность увеличивается до очень высокого уровня.
Однако и в нём имеется ряд уязвимостей. Именно поэтому он используется в сочетании с Hashimoto.
Для краткости мы можем называть его майнингом Eth. Это алгоритм майнинга Ethereum.
Алгоритм Хашимото, разработанный Тадеушем Дрийя, зависит от операций ввода-вывода.
Таким образом, он ограничивает скорость майнинга, вызывая операции ввода-вывода, такие как чтение и запись памяти.
Алгоритм Ethash требователен к памяти, а также к пропускной способности для ввода-вывода. Поэтому практически невозможно создать ASIC для Ethash.
Хешрейт Ethash измеряется в мегахешах в секунду.
Монеты, которые используют этот алгоритм
Алгоритм Ethash был разработан специально для Ethereum.
Поэтому неудивительно, что он используется в Ethereum. В итоге он также используется проектами Ethereum Classic, UBIQ, Music Coin и т. д. Expanse – это ещё одна криптовалюта, которая использует данный алгоритм.
Особенности майнинга
Самым выгодным способом майнинга криптовалют на базе Ethash является использование видеокарт. В частности, установок, собранных из графических процессоров AMD.
Такие видеокарты, как AMD RX 480, RX 570, RX 580, обеспечивают наилучшее соотношение цены и производительности.
Но на данный момент видеокарты AMD пользуются огромным спросом.
Поэтому майнерам приходится переключаться на сторону «зелёных«. Такие карты от команды Nvidia, как GTX 1070, GTX 1070Ti, также могут быть прибыльными.
Стоит ли начинать майнинг по этому алгоритму
Вы можете собрать прибыльную ферму для Ethash всего за 2000–2500 долларов. Поэтому мы рекомендуем вам заняться майнингом криптовалют на основе Ethash, если у вас есть необходимая сумма для инвестирования.
Кроме того, для ферм на базе GPU не требуется особо сложных систем охлаждения. Наличия нормальной вентиляции будет вполне достаточно.
Алгоритм X11
Алгоритм хеширования X11 создан основным разработчиком криптовалюты Dash Эваном Даффилдом. В нём используется 11 различных алгоритмов хеширования. Отсюда и название X11.
Алгоритм X11 является чрезвычайно эффективным. Настроенные под него фермы потребляют на 30-50% меньше электроэнергии, чем оборудование для Scrypt. Это означает, что оборудование при работе намного меньше греется.
В настоящее время хешрейт рассчитывается в гигахешах в секунду.
Монеты, которые используют этот алгоритм
Как уже упоминалось выше, алгоритм X11 используется криптовалютой Dash. Используя установки для X11, вы также можете добывать CannabisCoin, KarmaCoin и XCurrency.
Особенности майнинга
Поначалу майнинг алгоритма X11 осуществлялся с использованием ферм на базе видеокарт. Но теперь для этого алгоритма разработаны установки ASIC.
Вы можете выполнять майнинг X11, используя установки ASIC от Antminer, Baikal, Innosilicon и т. д. Цена этих ASIC’ов может варьироваться от 1500 до 13000 долларов.
Стоит ли начинать майнинг по этому алгоритму
Мы не рекомендуем начинать майнинг X11, если вы не имеете большого опыта. Лучше придерживаться более простых криптовалют.
Алгоритм Cryptonight
Первоначально Cryptonight был разработан для майнинга с помощью любых процессоров. Он был реализован в CryptoNote, протоколе конфиденциальности с открытым исходным кодом.
Лимитирующим фактором в этом алгоритме являются операции, связанные с вводом-выводом. В этом алгоритме хеширования каждый новый блок зависит от всех предыдущих блоков.
Обычно каждый экземпляр блока Cryptonight весит около 2 МБ. Поэтому практически невозможно разработать ASIC для Cryptonight.
Хешрейт Cryptonight измеряется в хешах в секунду.
Монеты, которые используют этот алгоритм
Данный алгоритм стал популярным в основном благодаря криптовалюте Monero, ориентированной на конфиденциальность.
Кроме того, он используется в некоторых других криптовалютах, таких как DigitalNote, DarkNetCoin и, с недавних пор, в Electroneum.
Особенности майнинга
Майнинг Cryptonight возможен даже на процессорах мобильных устройств. Eletroneum проводит бета-тестирование для изучения потенциала таких процессоров.
Многие сайты использовали особый код javascript для майнинга Monero, используя процессоры посетителей. И это оказалось очень выгодным делом.
Но если вы хотите стать полноценным майнером, лучше собрать установку на базе GPU. В идеале вам следует использовать видеокарты AMD Vega 56.
Именно они обеспечивают наилучший хешрейт среди всех графических процессоров. Отчасти это связано с высокой пропускной способностью памяти, установленной на этих картах.
С картами Vega при разгоне и использовании пользовательского BIOS вы можете ожидать хешрейт до 2000 H/s.
Стоит ли начинать майнинг по этому алгоритму
Да, мы рекомендуем майнинг криптовалют на основе Cryptonight. Вы можете добывать либо Monero, либо Electroneum.
Electroneum всё ещё проводит бета-тестирование своих функций. То есть, в настоящее время вам следует выбирать сольный майнинг Monero.
Алгоритм equihash
Equihash, разработанный Алексеем Бирюковым и Дмитрием Ховратовичем из Люксембургского университета, – это ещё один требовательный к памяти алгоритм хеширования.
Он основан на криптографической концепции под названием Generalized Birthday Problem (Обобщённая проблема для рождения).
Высокие требования к памяти снижают риск появления ASIC-майнеров. В случае Equihash хешрейт зависит в основном от того, сколько у вас оперативной памяти, а не от тактовой частоты вашего оборудования.
Команда Zcash заявляет, что они используют этот алгоритм, потому что «Equihash имеет очень эффективную процедуру верификации. В будущем это может иметь важное значение для лёгких клиентов на устройствах с малой мощностью или для реализации клиента Zcash внутри сети Ethereum«.
Для обозначения хешрейта обычно используется количество решений в секунду или Sol/s.
Монеты, которые используют этот алгоритм
Как уже упоминалось выше, Equihash использует очень популярная криптовалюта Zcash. Hushcoin, Bitcoin Gold, Verge также являются примерами валют, которые его используют.
Особенности майнинга
Лучший способ майнинга криптовалют на базе Equihash – видеокарты Nvidia. Модели GTX 1070 и GTX 1070Ti обеспечивают лучшие параметры производительности за свои деньги.
Стоит ли начинать майнинг по этому алгоритму
Да, вы можете заняться майнингом криптовалют, основанных на Equihash. Мы рекомендуем майнинг Zcash и Verge, поскольку обе эти монеты очень популярны.
И конкуренция не такая уж высокая. Поэтому ожидайте снижения срока окупаемости.
Заключительные слова
Надеемся, в этой статье нам удалось предоставить вам полезную информацию. Мы физически не можем охватить все алгоритмы хеширования. Но мы постарались рассказать о самых популярных (и прибыльных).
Для самых любопытных читателей скажем только, что существует много других алгоритмов хеширования, таких как Groestl, Lyra2REv2, Blake (2b, 2s, 14r), LBRY, NeoScrypt, Pascal, Skunkhash и так далее.
Над статьями работает команда авторов, переводчиков и редактор. На сайте команда Privatefinance.biz публикует информационные статьи, обзоры, рейтинги, гайды о торговле на финансовых рынках и инвестировании, рекомендации по выбору брокера и инструментов инвестирования, актуальные новости из мира финансов.
Почта для связи с нами: [email protected]
Как хешировать список адресов электронной почты?
Мы рассмотрим рекомендации по предварительному форматированию и предоставим пошаговые инструкции по использованию нашего скрипта hashingFunction из командной строки.
Выполните следующие действия, чтобы вручную хэшировать свои электронные письма, или используйте наше бесплатное приложение Touchless PII Hasher, чтобы сделать это быстро, легко и безопасно. ОбзорВсе электронные письма, загружаемые в Narrative, должны быть псевдонимизированы с помощью одной или нескольких функций хеширования: MD5, SHA-1 или SHA-256.И какую бы функцию вы ни использовали, существуют стандартные методы предварительного форматирования, которые могут помочь обеспечить соответствие другим псевдонимизированным данным.
Инструменты для автоматического форматирования и хэширования
- Для меньших списков просто сделайте копию нашей электронной таблицы Hashing Functions.
- Для больших списков используйте наш сценарий hashingFunction и следуйте процедуре командной строки для Mac OS или Windows, подробно описанной ниже.
Предварительное форматирование
- нижний регистр весь текст
Функции хэширования чувствительны к регистру.Таким образом, до псевдонимизации электронных писем, это стандартная практика — писать строчными буквами весь текст. - Удаление лишних символов и пробелов
Любые лишние пробелы или ненужные символы приведут к совершенно другому результату хеширования. Поэтому обязательно удалите:
- пробелы и/или разделители между сообщениями электронной почты (например, запятые)
- дополнительных точек в электронном письме имя пользователя
(адрес электронной почты состоит из имя_пользователя@домен.com ) - Знаки «+» и все символы между «+» и » @domain. com »
(например, удалить «+новости» из [email protected] )
- Убедитесь, что список представляет собой CSV-файл с одним столбцом.
Функции хеширования
Хеширование может выполняться с помощью любой из трех распространенных функций хеширования: MD5, SHA1, SHA256.
Чтобы получить наивысший уровень корреспонденции, мы рекомендуем использовать все три функции , в результате чего для каждого электронного письма в вашем списке будет три псевдонимизированных символьных строки.
E-mail: [email protected]
MD5: 29a1df4646cb3417c19994a59a3e022a
SHA1: e1e8d3e4a336d4f9dc63b70a534ff10834471556
SHA256: 06a240d11cc201676da976f7b49341181fd180da37cbe40a77432c0a366c80c3
Как форматировать и хэшировать небольшие списки в Google Sheets
Наша электронная таблица Hashing Functions автоматически выполняет предварительное форматирование и все три функции хеширования.
Шаг 1: Скопируйте список адресов электронной почты и вставьте его, начиная с ячейки A4.
Шаг 2: Расчет электронной таблицы может занять несколько минут. По завершении процесса перейдите на вкладку DOWNLOAD_THIS_SHEET_AS_.CSV_FILE.
Шаг 3: Наконец, перейдите в меню «Файл», выберите «Загрузить» и выберите Значения, разделенные запятыми (.csv, текущий лист) . Используйте этот список для загрузки в Narrative.
(На всякий случай у нас также есть таблица Google, которая будет работать для хэширования телефонных номеров, которая удаляет все нечисловые символы перед хешированием: функции хеширования (номера телефонов).Вы можете использовать ту же процедуру, что и выше.)
Как форматировать и хэшировать из командной строки в Mac OSНаш скрипт hashingFunction автоматически выполняет предварительное форматирование и все три функции хеширования. Его можно скопировать и вставить для одноразового использования или сохранить в вашей системе для многократного использования.
Сначала войдите в командную строку, выполнив поиск приложения под названием «Терминал».
Для одноразового использования
Шаг 1: Щелкните ссылку здесь, чтобы открыть наш hashingFunctionCopyPaste.txt в новой вкладке. Скопируйте текст из файла, вставьте в командную строку и нажмите Введите . (Убедитесь, что вы добавили последний } внизу.)
Шаг 2: Введите hashingFunction <
hashingFunction <
Шаг 3: Убедитесь, что ваш список адресов электронной почты состоит из одного столбца . CSV файл.
Перетащите файл в Терминал.
hashingFunction < /Users/рассказ/Documents/emailTestList.csv
Шаг 4: Введите символ > и имя, которое вы хотите назвать для нового хэш-списка. Нажмите Введите .
hashingFunction < /Users/narrative/Documents/emailTestList.csv > emailHashedList.csv
ВНИМАНИЕ: ДЕЛАТЬ НЕ направлять вывод в файл с тем же именем. Это приведет к удалению содержимого вашего файла.
hashingFunction < имя_файла.csv > имя_файла.csv
Шаг 5: Перейдите в свой Домашний каталог, чтобы найти обработанный файл.
(На всякий случай у нас также есть скрипт, который будет работать для хеширования телефонных номеров, который удаляет все нечисловые символы перед хэшированием: phoneHashingFunctionCopyPaste.txt. Вы можете использовать ту же процедуру копирования и вставки, что и выше.)
Чтобы сохранить функцию хеширования для постоянного использования
- Загрузите скрипт hashingFunction.py. (Control+щелчок и выберите «Сохранить ссылку как. ..»)
- Поместите файл в папку bin , по адресу: /Users/ YOUR_USERNAME_HERE /bin
Чтобы проверить, есть ли у вас уже папка bin , перейдите в свой домашний каталог и нажмите Command+Shift+Period для отображения скрытых папок. Если вы видите папку с именем bin , просто перетащите hashingFunction.py в папку.
Если у вас еще нет папки bin , создайте ее в домашнем каталоге. Затем перетащите hashingFunction.py в папку.
- Сделайте файл исполняемым
Откройте терминал, введите следующее и нажмите Enter:
chmod +x hashingFunction.py
- Теперь вы сможете использовать скрипт hashingFunction.py в любое время, используя описанный выше процесс.
Шаг 1: Тип hashingfunction.py <
Шаг 2: Перетащите и опустите свой файл (убедитесь, что ваш файл один столбец CSV файл )
Шаг 3: Тип> emailHashedList. csv
Шаг 4: Доступ к emailHashedList.csv в домашнем каталоге
hashingFunction.py < /Users/narrative/Documents/emailTestList.csv > emailHashedList.CSV
Проверка вашего вывода
При использовании этого процесса для хэширования вашего списка электронных писем мы рекомендуем протестировать hashingFunction в этом тестовом списке электронных писем. Ваш выходной файл должен точно соответствовать следующему:
06a240d11cc201676da976f7b49341181fd180da37cbe40a77432c0a366c80c3
29a1df4646cb3417c19994a59a3e022a
e1e8d3e4a336d4f9dc63b70a534ff10834471556
06a240d11cc201676da976f7b49341181fd180da37cbe40a77432c0a366c80c3
29a1df4646cb3417c19994a59a3e022a
e1e8d3e4a336d4f9dc63b70a534ff10834471556
9f543669a5fee1099e4831c5a6fbf4e5ac0bf034ab4a21619f8e4886b6c4dea4
54e90da195dd1493951bf561df4a3efd
0f56865108d4c1325ecd2d5db8d15e1db4f2725b
45600ad2083b4eabe118fba5e6eb19369cb23bbedee4e6b35607a552e693d4cd
ca51a2716ebffd663a8bf16e1f269b31
1ce4d2f27b9780cfa201e5f7815e27498fd4cfe6
Как форматировать и хешировать из командной строки в Windows
Инструкции для Windows скоро появятся
Загрузка списка в повествование
Все списки, загружаемые в Narrative, должны быть в формате . формат csv . Дополнительные сведения о загрузке списков в целом см. в разделе Как загрузить список идентификаторов.
Дополнительная информация
Публикация в блоге: Преобразование адресов электронной почты в безопасные идентификаторы с помощью Touchless PII Hasher
Как использовать приложение Touchless PII Hasher?
Википедия: алгоритм дайджеста сообщений MD5
Википедия: SHA-1 (Алгоритм безопасного хэширования 1)
Википедия: SHA-2 (Алгоритм безопасного хэширования 2)
SHA256 против Scrypt ASIC: сравнение оборудования для майнинга криптовалют
SHA256 против Scrypt | ВведениеSHA-256 и Scrypt являются наиболее часто используемыми системами алгоритмов в майнинге криптовалют для аутентификации блоков данных транзакций, которые устанавливаются разработчиками данного типа валюты.
ША-256Между SHA256 и Scrypt, SHA-256 имеет более высокую сложность из двух, используемых в биткойнах и большинстве валют, разветвленных из его кода. Обработка блочных данных требует больше времени, в результате чего время обработки транзакций измеряется в минутах, а не в секундах, но говорят, что это также более комплексно и менее подвержено ошибкам.
Сторонникитакже утверждают, что он лучше защищает данные. Добыча монет с помощью SHA-256 часто требует скорости хеширования в диапазоне GH/s или выше, а это означает, что отдельные майнеры сталкиваются с трудностями при создании блока.Те, кто часто использует оборудование для этого типа майнинга, настраивают устройство только для выполнения операций майнинга.
Скрипт ASICScrypt — более быстрый и простой алгоритм, и он стал фаворитом среди новых цифровых валют, выводимых в космос. Scrypt можно легко запустить на процессоре, и он потребляет меньше энергии, чем SHA-256, что, в свою очередь, делает его фаворитом большинства индивидуальных майнеров.
Скорость хэширования Scryptдля генерации новых монет обычно находится в диапазонах килохэшей в секунду (KH/s) или мегахэшей в секунду (MH/s), что может быть выполнено с использованием обычных компьютеров вместо ASIC или другого специализированного оборудования.
Некоторые спорят, что на эту более простую систему могут легче повлиять проблемы безопасности, поскольку быстрое время обработки транзакций требует менее детального изучения даты со стороны системы. Но до сих пор не было случаев реальных проблем.
Ожидается, что в будущем трудности с хешированием для более популярных валют, использующих алгоритм майнинга SHA-256, таких как биткойн, возрастут, что приведет к ограничению майнинга криптовалют майнинговыми пулами или промышленными майнерами.Из-за этого ожидается, что криптовалюты на основе Scrypt будут расти в популярности благодаря простоте их майнинга.
Майнинг с помощью SHA256 и Scrypt ASIC | СравнениеБиткойн использует алгоритм SHA-256 для генерации хэшей, представляющих данные, хранящиеся в блоках блокчейна. Как мы упоминали выше, SHA-256 более сложен в использовании, а это означает, что он очень точен и безопасен, но также медленный. Вот почему требуется десять минут, чтобы сгенерировать только один блок в цепочке биткойнов.
Майнинг с использованием SHA-256 требует использования высокой скорости хеширования, и из-за этого майнерам приходится использовать специальное оборудование, а не графический процессор, поскольку он обеспечивает более высокие скорости хеширования.
К 2011 году майнеры перешли на настраиваемое оборудование, известное как программируемые вентильные матрицы (FPGA), как средство направления дополнительной вычислительной мощности на майнинг. После того, как в 2013 году был выпущен первый ASIC, майнинг стал операцией промышленного уровня, а к 2014 году ASIC стали доминировать на рынке майнинга биткойнов.
Алгоритм Scrypt был впервые представлен разработчиками Litecoin в 2011 году. На тот момент алгоритм считался устойчивым к более новому оборудованию для майнинга, которое использовалось для майнинга биткойнов.
Поскольку Scrypt является менее сложным алгоритмом и требует более низкой скорости хеширования, время генерации блока Litecoin составляет всего две с половиной минуты.
Однако Scrypt требует больше ресурсов памяти, чем SHA-256. Аппаратное обеспечение, доступное на момент выпуска Litecoin, не могло майнить Scrypt.Даже когда ASIC появились в 2013 году, они были созданы для развертывания SHA-256. Из-за этого графические процессоры использовались исключительно для майнинга Litecoin в течение короткого периода времени.
Но эта эра была недолгой, так как в 2014 году ZeusMiner выпустила свой первый ASIC Scrypt. В настоящее время оба рынка оборудования SHA256 и Scrypt ASIC находятся под монополией майнингового гиганта Bitmain.
SHA256 против Scrypt ASIC: алгоритм монетНекоторые примеры монет, использующих алгоритм SHA-256:
Монеты, использующие алгоритм ScryptНекоторые примеры монет, использующих алгоритм Scrypt:
При выборе типа монеты, которую вы хотите добывать, вы должны учитывать различные факторы.Норма прибыли является одним из них, и вы можете рассчитать ее с помощью калькулятора.
Для работы монеттакже требуется различное программное обеспечение для майнинга, некоторые из которых имеют более высокую степень сложности по сравнению с другими. Стоимость оборудования и электроэнергии также является проблемой, которая при майнинге SHA-256 довольно высока.
Вам также придется решить, хотите ли вы майнить в пуле майнинга или индивидуально, что может быть единственным вариантом для очень новых альткойнов.
ЗаключениеПрежде чем заниматься майнингом, следует тщательно изучить вопрос, прежде чем покупать какое-либо оборудование, такое как SHA-256 или Scrypt ASIC.Учитывая текущее состояние рынка, потенциал получения прибыли от майнинга очень низок, и может пройти много времени, прежде чем вы начнете получать прибыль от инвестиций. Мы надеемся, что наша статья SHA256 vs Scrypt ASIC поможет вам понять различия между этими двумя системами алгоритмов.
Уведомление: Информация в этой статье и предоставленные ссылки предназначены только для общих информационных целей и не должны представлять собой какие-либо финансовые или инвестиционные рекомендации. Мы советуем вам провести собственное исследование или проконсультироваться с профессионалом, прежде чем принимать финансовые решения. Пожалуйста, подтвердите, что мы не несем ответственности за любые убытки, вызванные любой информацией, представленной на этом веб-сайте.
Создание хэша SHA-256 из командной строки
1. Обзор
Стандарт SHA-256 используется для проверки целостности документов . Он предпочтительнее стандарта SHA-1, поскольку последний, как было показано, создает один и тот же хэш для разных документов.
В этом руководстве мы рассмотрим генерацию хэша SHA-256 с помощью команды sha256sum .
2. Создание хэшей SHA-256 для файлов
Мы можем использовать команду sha256sum в двух режимах ; двоичный и текстовый (по умолчанию) . В Linux оба режима генерируют один и тот же хэш SHA-256, поэтому в этом руководстве используется режим по умолчанию.
Давайте создадим текстовый файл с простым текстом и используем его, чтобы продемонстрировать, как работает команда:
эхо "https://baeldung.COM" > data.txt
Давайте теперь создадим хэш sha-256 вышеуказанного файла :
sha256sum data.txt
86c5ceb27e1bf441130299c0209e5f35b88089f62c06b2b09d65772274f12057 data.txt
Этот сгенерированный вывод состоит из:
- хеш-сумма – первые 65 символов
- пробел(а)
- звездочка (только в двоичном режиме)
- путь к файлу или просто имя файла
Мы также можем сгенерировать хэш для файла в каталоге :
sha256sum /путь/к/данным.текст > контрольная сумма
контрольная сумма кошки
86c5ceb27e1bf441130299c0209e5f35b88089f62c06b2b09d65772274f12057 /path/to/data.txt
3. Проверка целостности файла
Давайте используем хэш, хранящийся в файле контрольной суммы, чтобы проверить целостность файла data. txt , который мы хэшировали:
sha256sum --проверить контрольную сумму
data.txt: ОК
Далее давайте изменим информацию, содержащуюся в data.txt , чтобы имитировали неудачный тест .Мы будем использовать команду sed , чтобы заменить «https» на «http»:
sed -i 's/https/http/' data.txt
Наконец, мы снова проверяем целостность файла:
sha256sum --проверить контрольную сумму
data.txt: ОШИБКА
sha256sum: ПРЕДУПРЕЖДЕНИЕ: 1 вычисленная контрольная сумма НЕ совпала
3.1. Работа с несколькими файлами
Давайте добавим еще одну запись в файл контрольной суммы для другого файла . Мы сделаем это, добавив простой текст в новый файл, сгенерировав дайджест для этого нового файла и добавив его в файл контрольной суммы:
. эхо "https://google.COM" > data2.txt
sha256sum data2. txt >> контрольная сумма
Если теперь мы проведем проверку целостности для всех записей в контрольной сумме файла , он обработает каждую из записей, сообщая нам, какие файлы не прошли проверку, а какие прошли:
sha256sum --проверить контрольную сумму
data.txt: ОШИБКА
data2.txt: ОК
sha256sum: ПРЕДУПРЕЖДЕНИЕ: 1 вычисленная контрольная сумма НЕ соответствует
4. Заключение
В этой статье мы увидели, как использовать команду sha256sum для проверки целостности файлов путем создания хеш-дайджеста SHA-256 .После этого мы сохранили вывод в файл и использовали его для проверки целостности файла.
Наконец, мы увидели, как проверить целостность нескольких файлов.
Авторы Нижняя частьЕсли у вас есть несколько лет опыта работы с экосистемой Linux и вы хотите поделиться этим опытом с сообществом, ознакомьтесь с нашим Руководством по участию .
Разрешение встроенных сценариев в вашей политике безопасности контента с использованием хэша | Брайан Браун
Проблема: ваша политика безопасности контента выдает ошибки, потому что в вашем HTML есть встроенные скрипты:
Как говорится в сообщении об ошибке, вы можете решить эту проблему с помощью ключевого слова «unsafe-inline», «nonce» или «hash.Я хочу описать «хеш-решение», как оно работает и почему оно безопасно.
Быстрое решение
Шаг 1
Выберите и скопируйте хэш, показанный в сообщении об ошибке (в таких браузерах, как Chrome и Edge).
Шаг 2
Вставьте хэш-текст в директиву script-src вашей политики безопасности контента.
Я добавил этот хэш в политику метатегов, но вы также можете добавить его в политику на основе заголовков.Шаг 3
Обновите страницу и убедитесь, что сообщение об ошибке исчезло.
Примечание. Это же исправление можно применить и к встроенным стилям с помощью директивы style-src.
Более подробное объяснение
Так что же это за ошибка и почему это исправление работает?
Задача Content Security Policy (CSP) состоит в том, чтобы ограничить набор функций браузера 1 для вашего веб-сайта, чтобы хакерам было труднее их использовать.
Одной из таких ограниченных функций является встроенный скрипт (по сути, набор из тегов
с кодом JavaScript внутри них).
Как объясняет Google,злоумышленники часто пытаются внедрить свои собственные тегив ваш HTML,чтобы получить контроль над интерфейсом вашего веб-сайта.Это один из самых распространенных векторов атак,поэтому встроенные скрипты по умолчанию запрещены в CSP.Выможетеразрешить встроенные скрипты в вашем CSP(используя это ключевое слово «unsafe-inline»),но это крайне не рекомендуется.
В идеале ваш CSP должен запретить встроенные скрипты,и ваша веб-страница не будет их использовать.К сожалению,многие сайты полагаются на встроенные скрипты,и удалить их все может быть сложно.Вот тут-то и появляется функция хеширования.
Функция хеширования
Функция хеширования позволяет выборочно разрешать определенный встроенный сценарий в вашей политике безопасности содержимого.
Он делает это,используя хэш-функцию для создания уникального идентификатора для встроенного скрипта.Добавление этого идентификатора в вашу политику похоже на добавление сценария в белый список.
Примечание:хеш-функции — это алгоритмы,которые используются для создания уникального идентификатора(или дайджеста)для заданных входных данных.У них есть несколько приложений,таких как создание «идентификаторов фиксации git»,скрытие данных пароля и проверка целостности HTTPS-запросов.Чтобы сгенерировать идентификатор для нашего встроенного скрипта,мы можем скопировать каждый символ внутри нашихтегов
(включая пробелы)и вставить их в качестве входных данных нашего алгоритма хеширования,как показано в этом примере2:
Эта команда терминала(echo-n"$(pbpaste)"|openssl sha256-binary|openssl base64)использует"pbpaste"и библиотеку"openssl",которые доступны по умолчанию в большинстве современных операционных систем Mac.
Идентификатор,выдаваемый алгоритмом(обведен красным),может быть добавлен к CSP.
Этот рабочий процесс немного сложен,поэтому многие браузеры предоставляют вам идентификатор SHA-256 тега скрипта внутри сообщения об ошибке,избавляя вас от необходимости создавать его самостоятельно.Если вы решите сгенерировать его самостоятельно,вы можете дополнительно использовать другие алгоритмы хеширования,такие как SHA-384 или SHA-512.
Проверка хеша
Когда браузер с CSP видит встроенный тег,он автоматически пропускает его содержимое через алгоритм хэширования CSP,просматривает полученный идентификатор и проверяет,соответствует ли идентификатор идентификатору,разрешенному CSP.Если идентификатор указан,браузер точно знает,что вы разрешили использование этого скрипта на своей странице.Если идентификатор отсутствует,браузер выдает ошибку и не выполняет скрипт.
Компромиссы
Хэш-решение хорошее,потому что оно быстрое и простое,но есть и недостатки.
- Если вам нужно разрешить несколько встроенных скриптов(или стилей),все эти идентификаторы могут загромождать вашу политику.
- Каждый раз,когда вы вносите изменения во встроенный скрипт,вам нужно будет обновить CSP.Это относится даже к нефункциональным изменениям,таким как комментарии к коду или пробелы.
Эти проблемы могут раздражать,поэтому перед использованием хеш-решения лучше свести к минимуму количество встроенных скриптов.Кроме того,вы можете проверить решениеnonce
,которое может работать лучше для вас,в зависимости от вашего технического стека и количества встроенных скриптов.
2Примеры в этом посте взяты из политики безопасности контента,которую я добавил в свой проект.Вы можете увидеть полные изменения фиксации для этого добавления политики здесь,на Github.
Content-Security-Policy — HTTP|МДН
Заголовок ответа HTTPContent-Security-Policy
позволяет
администраторам веб-сайта для управления ресурсами,которые пользовательскому агенту разрешено загружать для
данная страница.За некоторыми исключениями,политики в основном включают указание источников серверов и
конечные точки сценария.Это помогает защититься от атак межсайтового скриптинга.(Межсайтовый_скриптинг).
Дополнительные сведения см.в вводной статье о политике безопасности содержимого(CSP).
Content-Security-Policy:;<политика-директива>
где
состоит из:<директива><значение>
без внутренней пунктуации.
Директивы выборки
Директивы выборки управляют местами,из которых могут быть загружены определенные типы ресурсов.
дочерний источник
Определяет допустимые источники для Интернета.рабочие и вложенные контексты просмотра,загруженные с использованием таких элементов,как
<кадр>
и.
Предупреждение:Вместо
child-src
,если вы хотите регулировать вложенные контексты просмотра и рабочие процессы,вы должны использовать директивыframe-src
иworker-src
соответственно.коннект-источник
Ограничивает URL-адреса,которые можно загружать с помощью интерфейсов скриптов
источник по умолчанию
Служит запасным вариантом для другой выборки директивы.
источник шрифта
Указывает действительные источники для шрифтов,загружаемых с использованием
@font-face
.кадр-источник
Указывает допустимые источники для загрузки вложенных контекстов просмотра с использованием таких элементов,как
<кадр>
и.
изображение-источник
Указывает допустимые источники изображений и фавиконов.
манифест-источник
Указывает допустимые источники файлов манифеста приложения.
медиа-источник
Указывает допустимые источники для загрузки мультимедиа с помощью
,
и
элементов.
объект-источник
Указывает допустимые источники для
,
,и
элементов.
Примечание:Элементы,контролируемые
object-src
,возможно,по совпадению считаются устаревшими элементами HTML и не получают новые стандартизированные функции(например,атрибуты безопасностипесочницы
илиразрешают
для).Поэтому рекомендуетсядля ограничить эту директиву fetch(например,явно установить
object-src'none'
,если возможный).предварительная выборка-источник
Указывает допустимые источники для предварительной выборки или предварительного рендеринга.
сценарий-источник
Указывает действительные источники для JavaScript.
скрипт-источник-элемент
Указывает допустимые источники для элементов JavaScript
.
сценарий-источник-атрибут
Указывает допустимые источники для встроенных обработчиков событий JavaScript.
стиль-источник
Указывает действительные источники для таблиц стилей.
стиль-источник-элемент
Указывает допустимые источники для таблиц стилей
элементов
иэлементов с
rel="stylesheet"
.стиль-источник-атрибут
Указывает допустимые источники для встроенных стилей,применяемых к отдельным элементам DOM.
рабочий-источник
Указывает допустимые источники для
Worker
,SharedWorker
илискриптов ServiceWorker
.
Документ директивы
Директивы документа управляют свойствами документа или рабочей среды,к которой применяется политика.применяется.
база-ури
Ограничивает URL-адреса,которые можно использовать в документе
элемент.песочница
Включает песочницу для запрошенного ресурса,аналогичную
песочница
атрибут.
Навигационные директивы
Директивы навигации определяют,в какие места пользователь может перейти или отправить форму,Например.
форма-действие
Ограничивает URL-адреса,которые могут использоваться в качестве цели отправки формы из данный контекст.
фреймы-предки
Указывает действительных родителей,которые могут встраивать страницу,используя
,
,
,
,или
<апплет>
.перейти к
Ограничивает URL-адреса,по которым документ может инициировать навигацию любым способом,в том числе
<форма>
(если не указаноформа-действие
),,
окно.расположение
,window.open
и т.д.
Указания по отчетности
Директивы по отчетности контролируют процесс отчетности о нарушениях CSP.См.такжеЗаголовок Content-Security-Policy-Report-Only
.
отчет-ури
Указывает пользовательскому агенту сообщать о попытках нарушения политики безопасности контента.Эти отчеты о нарушениях состоят из документов JSON,отправляемых по протоколу HTTP.
Запрос POST
на указанный URI.Предупреждение:Хотя директива
report-to
предназначена для замены устаревшей директивыreport-uri
,Report-To
пока не поддерживается в большинстве браузеров.Итак,для совместимости с текущими браузерами а также добавление прямой совместимости,когда браузеры получают поддержкуReport-To
,вы можете указать какreport-uri
,так иreport-to
:Политика безопасности содержимого:...;URI отчета https:
В браузерах,поддерживающих
,отчет
,директиваreport-uri
будет проигнорирована.сообщить на
Запускает событие
SecurityPolicyViolationEvent
.
Другие директивы
требуют-шри-для
Требуется использование SRI для скриптов или стилей на странице.
требуют доверенных типов для
Принуждает доверять Типы в приемниках инъекций DOM XSS.
доверенные типы
Используется для указания списка разрешенных доверенных типов.политики.Trusted Types позволяет приложениям блокировать приемники внедрения DOM XSS для принимать только неподдельные типизированные значения вместо строк.
небезопасные запросы на обновление
Инструктирует пользовательских агентов обрабатывать все небезопасные URL-адреса сайта(те,которые обслуживаются через HTTP),как если бы они были заменены безопасными URL-адресами(обслуживаемыми через HTTPS).Эта директива предназначена для веб-сайтов с большим количеством небезопасных устаревших URL-адресов.что нужно переписать.
Устаревшие директивы
block-all-mixed-content
Предотвращает загрузку любых ресурсов с использованием HTTP,когда страница загружается с использованием HTTPS.
типы подключаемых модулей
Ограничивает набор подключаемых модулей,которые можно встроить в документ,ограничивая типы ресурсов,которые могут быть загружены.
реферер
Используется для указания информации в заголовке Referer(sic)для удаленных ссылок.со страницы.Вместо этого используйте заголовок
Referrer-Policy
.
Значения ключевых слов
нет
Не разрешает загрузку любых ресурсов.
сам
Разрешить ресурсы только из текущего источника.
строго-динамический
Подлежит уточнению
образец отчета
Подлежит уточнению
Небезопасные значения ключевого слова
небезопасный встроенный
Разрешить использование встроенных ресурсов.
небезопасная оценка
Разрешить использование динамической оценки кода,такой как
eval
,setImmediate
иwindow.исполняемый скрипт
.небезопасные хэши
Подлежит уточнению
небезопасно-разрешить перенаправления
Подлежит уточнению
Значения хостов
- Хост
- Разрешить загрузку ресурсов только с определенного хоста с дополнительной схемой,портом и путем.например
example.com
,*.example.com
,https:
- Части пути в CSP,которые заканчиваются на
/
,соответствуют любому пути,префиксом которого они являются.напримерexample.com/api/
будет соответствовать URL-адресам типаexample.com/api/users/new
.- Другие части пути в CSP точно совпадают,т.е.
example.com/file.js
будет соответствоватьhttp:
- Части пути в CSP,которые заканчиваются на
- Разрешить загрузку ресурсов только с определенного хоста с дополнительной схемой,портом и путем.например
- Схема
- Разрешить загрузку ресурсов только по определенной схеме,всегда должно заканчиваться"
:
".напримерhttps:
,http:
,данные:
и т.д.
- Разрешить загрузку ресурсов только по определенной схеме,всегда должно заканчиваться"
Другие значения
- nonce-*
Криптографический одноразовый номер(используется только один раз)для разрешения сценариев.Сервер должен генерировать уникальное значение nonce каждый раз,когда он передает политику.Крайне важно предоставить одноразовый номер,который нельзя угадать,поскольку в противном случае обход политики ресурса тривиален.Это используется в сочетании с атрибутом одноразового номера тега скрипта.например
одноразовый номер-DhcnhD3khTMePgXwdayK9BsMqXjhguVV
- вал*-*
ша256,ша384 или ша512.за которым следует тире,а затем значение sha*.например
sha256-jzgBGA4UWFFmpOBq0JpdsySukE1FrEN5bUpoK8Z29fY=
Рабочие вообщенеуправляются
политикой безопасности содержимого документа(или родительского рабочего процесса),создавшего их.К
указать политику безопасности контента для воркера,установитьContent-Security-Policy
заголовок ответа для запроса,который запрашивал
сам рабочий скрипт.
Исключением является случай,когда источником рабочего сценария является глобальный уникальный идентификатор.(например,если его URL-адрес содержит схему данных или большой двоичный объект).В этом случае работник делает наследовать политику безопасности содержимого документа или работника,создавшего его.
Механизм CSP позволяет указать несколько политик для ресурса,в том числе
через заголовокContent-Security-Policy
,Заголовок Content-Security-Policy-Report-Only
и<мета>
элемент.
Вы можете использовать заголовокContent-Security-Policy
более одного раза,как в
пример ниже.Обратите особое внимание на директивуconnect-src
.Четное
хотя вторая политика разрешает подключение,первая политика содержитconnect-src'нет'
.Добавление дополнительных политикможет только дополнительно
ограничитьвозможности защищаемого ресурса,а значит,не будет
запретить подключение и,как самая строгая политика,connect-src'none'
применяется.
Content-Security-Policy:default-src'self'http:коннект-источник'нет';Content-Security-Policy:connect-src http:источник сценария http:
Пример:отключить небезопасный inline/eval,разрешить загрузку только ресурсов(изображений,шрифтов,скрипты и т.д.)через https:
Content-Security-Policy:default-src https:
Использование метаэлемента HTML
Пример:уже существующий сайт,который использует слишком много встроенного кода для исправления,но хочет обеспечить ресурсы загружаются только по HTTPS и для отключения плагинов:
Content-Security-Policy:default-src https:'unsafe-eval''unsafe-inline';объект-источник'нет'
Пример:пока не применяйте указанную выше политику;вместо этого просто сообщайте о нарушениях,которые произошло бы:
Content-Security-Policy-Report-Only:default-src https:;отчет-uri/csp-нарушение-отчет-конечная точка/
См.Mozilla Руководство по веб-безопасности для получения дополнительных примеров.
Таблицы BCD загружаются только в браузере
Смягчение межсайтовых сценариев(XSS)с помощью строгой политики безопасности контента(CSP)-скриптинг сайта.
Появляется в:Безопасно и безопасноПочему следует развертывать строгую политику безопасности контента(CSP)?#
Межсайтовый скриптинг(XSS)— возможность внедрения вредоносных скриптов в веб-приложение — уже более десяти лет является одной из самых серьезных уязвимостей веб-безопасности.
Политика безопасности содержимого(CSP)— это дополнительный уровень безопасности,который помогает смягчить XSS.Настройка CSP включает в себя добавление HTTP-заголовка Content-Security-Policy на веб-страницу и настройку значений для управления тем,какие ресурсы пользовательскому агенту разрешено загружать для этой страницы.В этой статье объясняется,как использовать CSP на основе одноразовых номеров или хэшей для смягчения последствий XSS вместо широко используемых CSP на основе списка разрешенных узлов,которые часто оставляют страницу открытой для XSS,поскольку их можно обойти в большинстве конфигураций.
Ключевой термин
одноразовый номер— это случайное число,используемое только один раз,которое можно использовать для пометки тегакак надежного.
Ключевой термин
Хеш-функция — это математическая функция,которая преобразует входное значение в сжатое числовое значение — хэш.Хэш(например,SHA-256)можно использовать для пометки встроенного тегакак доверенного.
Политику безопасности содержимого,основанную на одноразовых значениях или хэшах,часто называютстрогим CSP.Когда приложение использует строгий CSP,злоумышленники,обнаружившие недостатки внедрения HTML,как правило,не смогут использовать их,чтобы заставить браузер выполнять вредоносные сценарии в контексте уязвимого документа.Это связано с тем,что строгий CSP разрешает только хэшированные сценарии или сценарии с правильным значением одноразового номера,сгенерированным на сервере,поэтому злоумышленники не могут выполнить сценарий,не зная правильного одноразового номера для данного ответа.
Чтобы защитить свой сайт от XSS,убедитесь,что пользовательский вводидезинфицирован,используйте CSP в качестве дополнительного уровня безопасности.CSP — это метод глубокой защиты,который может предотвратить выполнение вредоносных скриптов,но он не заменяет предотвращение(и оперативное исправление)ошибок XSS.
Почему строгий CSP рекомендуется вместо разрешенных CSP#
Если на вашем сайте уже есть CSP,который выглядит следующим образом:script-src www.googleapis.com
,он может оказаться неэффективным против межсайтовых сценариев!Этот тип CSP называется белым списком CSP,и у него есть несколько недостатков:
Это делает белые списки CSP,как правило,неэффективными для предотвращения использования XSS злоумышленниками.Вот почему рекомендуется использовать строгий CSP на основе криптографических одноразовых номеров или хэшей,что позволяет избежать ошибок,описанных выше.
Белый список CSP
- Неэффективно защищает ваш сайт.❌
- Должен быть сильно настроен.😓
Строгий CSP
- Эффективно защищает ваш сайт.✅
- Всегда имеет одинаковую структуру.😌
Что такое строгая политика безопасности контента?#
Строгая политика безопасности контента имеет следующую структуру и активируется установкой одного из следующих заголовков ответа HTTP:
Content-Security-Policy:
script-src'nonce-{RANDOM}''strict-dynamic';
объект-источник'нет';
base-uri'нет';
Content-Security-Policy:
script-src'sha256-{HASHED_INLINE_SCRIPT}''строгий динамический';
объект-источник'нет';
base-uri'нет';
Следующие свойства делают CSP,подобный описанному выше,«строгим» и,следовательно,безопасным:Теги
являются доверенными для разработчика сайта и должны быть разрешены для выполнения в браузере пользователя.
Устанавливает«строгий динамический»
,чтобы уменьшить усилия по развертыванию CSP на основе одноразовых номеров или хэшей,автоматически разрешая выполнение сценариев,созданных уже доверенным сценарием.Это также разблокирует использование большинства сторонних библиотек и виджетов JavaScript.
Не основан на списках разрешенных URL-адресов и,следовательно,не подвержен обычным обходам CSP.
Блокирует ненадежные встроенные сценарии,такие как встроенные обработчики событий илиjavascript:
URI.
Ограничиваетobject-src
для отключения опасных плагинов,таких как Flash.
Ограничиваетbase-uri
блокировкой внедрения тегов
.Это предотвращает изменение местоположения скриптов,загруженных с относительных URL-адресов,злоумышленниками.
Еще одно преимущество строгого CSP заключается в том,что CSP всегда имеет одинаковую структуру и не нуждается в настройке для вашего приложения.
Принятие строгого CSP#
Чтобы принять строгого CSP,вам необходимо:
- Решить,должно ли ваше приложение устанавливать CSP на основе одноразовых номеров или хэшей.
- Скопируйте CSP из раздела Что такое строгая политика безопасности контента и установите его в качестве заголовка ответа в своем приложении.
- Рефакторинг шаблонов HTML и клиентского кода для удаления шаблонов,несовместимых с CSP.
- Добавьте резервные копии для поддержки Safari и более старых браузеров.
- Разверните CSP.
Вы можете использовать Lighthouse(версия 7.3.0 и выше с флагом--preset=experimental
)Передовой опытаудит на протяжении всего этого процесса,чтобы проверить,есть ли на вашем сайте CSP и достаточно ли он строг,чтобы быть эффективным против XSS.
Шаг 1.Решите,нужен ли вам CSP на основе одноразовых номеров или хэшей#
Существует два типа строгих CSP:на основе одноразовых номеров и на основе хэшей.Вот как они работают:
- CSP на основе одноразового номера:вы генерируете случайное числово время выполнения,включаете его в свой CSP и связываете с каждым тегом скрипта на своей странице.Злоумышленник не может включить и запустить вредоносный скрипт на вашей странице,потому что ему нужно будет угадать правильное случайное число для этого скрипта.Это работает только в том случае,если число не угадывается и создается заново во время выполнения для каждого ответа.
- CSP на основе хэша:Хэш каждого тега встроенного скрипта добавляется в CSP.Обратите внимание,что у каждого скрипта свой хэш.Злоумышленник не может включить и запустить вредоносный скрипт на вашей странице,потому что хэш этого скрипта должен присутствовать в вашем CSP.
Критерии выбора строгого подхода CSP:
CSP на основе одноразовых номеров | каждый ответ. |
---|---|
CSP на основе хэша | Для HTML-страниц,обслуживаемых статически или требующих кэширования.Например,одностраничные веб-приложения,созданные с помощью таких фреймворков,как Angular,React или других,которые статически обслуживаются без рендеринга на стороне сервера. |
Шаг 2.Установите строгий CSP и подготовьте сценарии#
При настройке CSP у вас есть несколько вариантов:
- Режим только для отчетов(
Content-Security-Policy-Report-Only
)или принудительный режим(Content-Security-Policy
).Только для отчетов CSP еще не будет блокировать ресурсы — ничто не сломается,— но вы сможете видеть ошибки и получать отчеты о том,что было бы заблокировано.Локально,когда вы находитесь в процессе настройки CSP,это не имеет особого значения,потому что оба режима покажут вам ошибки в консоли браузера.Во всяком случае,принудительный режим еще больше облегчит вам просмотр заблокированных ресурсов и настройку вашего CSP,поскольку ваша страница будет выглядеть сломанной.Режим «только отчет» становится наиболее полезным позже в процессе(см.шаг 5). - Заголовок или тег HTML
.Для локальной разработки тег
может быть более удобным для настройки вашего CSP и быстрого просмотра того,как он влияет на ваш сайт.Однако:
- Позже,при развертывании вашего CSP в рабочей среде,рекомендуется установить его как заголовок HTTP.
- Если вы хотите настроить свой CSP в режиме только для отчетов,вам нужно установить его в качестве заголовка — метатеги CSP не поддерживают режим только для отчетов.
Установите следующийContent-Security-Policy
HTTP-заголовок ответа в вашем приложении:
Content-Security-Policy:
script-src'nonce-{RANDOM}'' строго-динамический';
объект-источник'нет';
base-uri'нет';
Caution
Замените заполнитель{RANDOM}
наслучайныйодноразовый номер,который регенерируетсяпри каждом ответе сервера.
Создать одноразовый номер для CSP#
Одноразовый номер — это случайное число,используемое только один раз при загрузке страницы.CSP на основе одноразового номера может смягчить XSS только в том случае,если значение одноразового номера равно,а злоумышленник не может угадать.Одноразовый номер для CSP должен быть:
- Криптографическинадежное случайноезначение(в идеале 128+битов в длину)
- Новое,сгенерированное для каждого ответа
- Base64,закодированное
Здесь одноразовый номер CSP в серверных инфраструктурах:
const app=express();Приложение
.get('/',function(request,response){
CSP заблокирует эти сценарии, поскольку они не имеют атрибутов nonce
.
Разрешено CSP
CSP разрешит выполнение этих сценариев, если ${NONCE}
заменить значением, соответствующим одноразовому номеру в заголовке ответа CSP.Обратите внимание, что некоторые браузеры будут скрывать атрибут nonce
при проверке источника страницы.
Подвохи
С 'strict-dynamic'
в вашем CSP вам нужно будет добавить одноразовые номера только к тегам
,присутствующим в исходном HTML-ответе.'strict-dynamic'
позволяет выполнять скрипты,динамически добавляемые на страницу,если они были загружены безопасным,уже доверенным скриптом(см.спецификацию).
Установите в приложении следующий заголовок ответа HTTPContent-Security-Policy
:
Content-Security-Policy:
script-src'sha256-{HASHED_INLINE_SCRIPT}''strict -динамический';
объект-источник'нет';
base-uri'нет';
Для нескольких встроенных скриптов используется следующий синтаксис:'sha256-{HASHED_INLINE_SCRIPT_1}''sha256-{HASHED_INLINE_SCRIPT_2}'
.
Предостережение
Заполнитель{HASHED_INLINE_SCRIPT}
должен быть заменен хэшем встроенного скрипта SHA-256 в кодировке base64,который можно использовать для загрузки других скриптов(см.следующий раздел).С помощью этого инструмента вы можете рассчитать SHA-хэши статических встроенных блоков.Альтернативой является проверка предупреждений о нарушении CSP в консоли разработчика Chrome,которая содержит хэши заблокированных скриптов,и добавление этих хэшей в политику как «sha256-…».
Сценарий,введенный злоумышленником,будет заблокирован браузером,так как только хешированный встроенный сценарий и любые сценарии,динамически добавленные им,будут разрешены для выполнения браузером.
Динамическая загрузка скриптов#
Все скрипты из внешних источников необходимо загружать динамически с помощью встроенного скрипта,поскольку хэши CSP поддерживаются браузерами только для встроенных скриптов(хеши для скриптов из источников плохо поддерживаются браузерами).
Заблокировано CSP
CSP заблокирует эти скрипты, поскольку хешировать можно только встроенные скрипты
Разрешено CSP
Чтобы разрешить выполнение этого скрипта, необходимо вычислить хэш встроенного скрипта и добавить его в заголовок ответа CSP, заменив заполнитель {HASHED_INLINE_SCRIPT}
. Чтобы уменьшить количество хэшей, вы можете при желании объединить все встроенные скрипты в один скрипт. Чтобы увидеть это в действии, ознакомьтесь с примером и изучите код.
Подвохи
При расчете хэша CSP для встроенных скриптов пробелы между открывающим и закрывающим тегами
имеют значение.С помощью этого инструмента вы можете рассчитать хэши CSP для встроенных скриптов.
async=false
и загрузке скриптаasync=false
в этом случае не блокируется,но используйте это с осторожностью.
В приведенном выше фрагменте кода добавленоs.async=false
,чтобы гарантировать,что foo выполняется до bar(даже если bar загружается первым).В этом фрагментеs.async=false
не блокирует синтаксический анализатор при загрузке скриптов;это потому,что скрипты добавляются динамически.Анализатор остановится только во время выполнения скриптов,точно так же,как он будет вести себя дляасинхронных скриптов
.Однако с этим фрагментом имейте в виду:
- Один или оба сценария могут быть выполнены до того,как документ завершит загрузку.Если вы хотите,чтобы документ был готов к моменту выполнения сценариев,вам нужно дождаться события
DOMContentLoaded
,прежде чем добавлять сценарии.Если это вызывает проблемы с производительностью(поскольку скрипты не начинают загружаться достаточно рано),вы можете использовать теги предварительной загрузки в начале страницы. отсрочка=истина
ничего не сделает.Если вам нужно такое поведение,вам придется вручную запустить скрипт в то время,когда вы хотите его запустить.
Шаг 3.
Рефакторинг шаблонов HTML и клиентского кода для удаления шаблонов,несовместимых с CSP#Встроенные обработчики событий(например,onclick="…"
,onerror="…"
)и URI JavaScript()можно использовать для запуска скриптов.Это означает,что злоумышленник,обнаруживший XSS-ошибку,может внедрить такой HTML-код и выполнить вредоносный код JavaScript.CSP на основе nonce или хэша запрещает использование такой разметки.Если на вашем сайте используется какой-либо из шаблонов,описанных выше,вам необходимо преобразовать их в более безопасные альтернативы.
Если вы включили CSP на предыдущем шаге,вы сможете видеть нарушения CSP в консоли каждый раз,когда CSP блокирует несовместимый шаблон.
В большинстве случаев исправить просто:
Чтобы реорганизовать встроенные обработчики событий,перепишите их так,чтобы они добавлялись из блока JavaScript#
Заблокировано CSP
Нечто.
CSP заблокирует встроенные обработчики событий.
Разрешено CSP.
CSP разрешает обработчики событий, зарегистрированные через JavaScript.
Для
javascript:
URI можно использовать аналогичный шаблон #Заблокировано CSP
foo
CSP заблокирует javascript: URI .
Разрешено CSP
foo
CSP разрешает обработчики событий, зарегистрированные через JavaScript.
Использование
eval()
в JavaScript # Если ваше приложение использует eval()
для преобразования сериализации строк JSON в объекты JS, вам следует преобразовать такие экземпляры в JSON.parse()
, что также быстрее.
Если вы не можете удалить все случаи использования eval()
, вы все равно можете установить строгий CSP на основе nonce, но вам придется использовать ключевое слово CSP 'unsafe-eval'
, что сделает вашу политику немного менее безопасной .
Вы можете найти эти и другие примеры такого рефакторинга в этой строгой CSP Codelab:
Шаг 4: Добавьте резервные копии для поддержки Safari и более старых браузеров #
CSP поддерживается всеми основными браузерами, но вам понадобятся два резервных варианта:
Использование
'strict-dynamic'
требует добавленияhttps:
в качестве запасного варианта для Safari, единственного крупного браузера без поддержки'strict-dynamic'
.Таким образом:- Все браузеры, поддерживающие
'strict-dynamic'
, будут игнорировать резервный вариантhttps:
, так что это не снизит силу политики. - В Safari скрипты из внешних источников будут разрешены для загрузки только в том случае, если они исходят из источника HTTPS. Это менее безопасно, чем строгий CSP — это запасной вариант, — но все же предотвратит некоторые распространенные причины XSS, такие как инъекции
javascript:
URI, потому что'unsafe-inline'
отсутствует или игнорируется при наличии хэша или одноразового номера.
- Все браузеры, поддерживающие
Чтобы обеспечить совместимость с очень старыми версиями браузера (4+ года), вы можете добавить
'unsafe-inline'
в качестве запасного варианта. Все последние браузеры будут игнорировать'unsafe-inline'
, если присутствует одноразовый номер CSP или хэш.
Content-Security-Policy:
script-src 'nonce-{random}' 'strict-dynamic' https: 'unsafe-inline';
объект-источник 'нет';
base-uri 'нет';
https:
и unsafe-inline
не делают вашу политику менее безопасной, потому что они будут игнорироваться браузерами, поддерживающими strict-dynamic
.
Шаг 5. Разверните ваш CSP #
Убедившись, что CSP не блокирует легитимные сценарии в вашей локальной среде разработки, вы можете приступить к развертыванию своего CSP в вашей (тогда промежуточной) производственной среде:
- (необязательно ) Разверните свой CSP в режиме только для отчетов, используя заголовок
Content-Security-Policy-Report-Only
. Узнайте больше об API отчетов. Режим «только отчет» удобен для тестирования потенциально критического изменения, такого как новый CSP в рабочей среде, до фактического применения ограничений CSP.В режиме только для отчетов ваш CSP не влияет на поведение вашего приложения (на самом деле ничего не сломается). Но браузер по-прежнему будет генерировать консольные ошибки и отчеты о нарушениях при обнаружении шаблонов, несовместимых с CSP (чтобы вы могли видеть, что не работает для ваших конечных пользователей). - Если вы уверены, что ваш CSP не приведет к поломке для ваших конечных пользователей, разверните свой CSP, используя заголовок ответа
Content-Security-Policy
. Только после того, как вы выполните этот шаг, CSP начнет защищать ваше приложение от XSS .Настройка вашего CSP через HTTP-заголовок на стороне сервера более безопасна, чем установка его в виде тега
Подводные камни
Убедитесь, что используемый вами CSP является "строгим", проверив его с помощью CSP Evaluator или Lighthouse. Это очень важно, так как даже небольшие изменения в политике могут значительно снизить ее безопасность.
Осторожно
При включении CSP для рабочего трафика вы можете увидеть некоторый шум в отчетах о нарушениях CSP из-за расширений браузера и вредоносных программ.
Ограничения #
Вообще говоря, строгий CSP обеспечивает надежный дополнительный уровень безопасности, который помогает смягчить XSS. В большинстве случаев CSP значительно уменьшает поверхность атаки (опасные шаблоны, такие как javascript:
URI, полностью отключены). Однако в зависимости от типа используемого вами CSP (одноразовые номера, хэши, с 'строгим динамическим'
или без него) бывают случаи, когда CSP не защищает:
- инъекция непосредственно в тело или в параметр
src
этого элемента - При наличии инъекций в расположение динамически создаваемых скриптов(
document.createElement('script')
),в том числе в любые библиотечные функции,которые создаютscript
узлы DOM на основе значения их аргументов.Сюда входят некоторые распространенные API,такие как.html()
jQuery,а также.get()
и.post()
в jQuery<3.0. - Если в старых приложениях AngularJS есть инъекции шаблонов.Злоумышленник,который может внедрить шаблон AngularJS,может использовать его для выполнения произвольного JavaScript.
- Если политика содержит
'unsafe-eval'
,инъекции вeval()
,setTimeout()
и несколько других редко используемых API.
Разработчики и инженеры по безопасности должны уделять особое внимание таким шаблонам во время проверки кода и аудита безопасности.Вы можете найти более подробную информацию о случаях,описанных выше,в этой презентации CSP.
Дополнительная литература#
Последнее обновление:— Улучшение статьиHMAC-SHA256|Помощь-Zoho Deluge
Описание
zoho.Encryption.hmacsha256возвращает хэш,соответствующий заданному тексту,сгенерированному с использованием алгоритма HMAC-SHA256.
Синтаксис
<ответ>=zoho.encryption.hmacsha256(<ключ>,<данные>,<тип_вывода>);
,где:тип
Params | данных | Описание |
<ответ> | ТЕКСТА | Хеш генерируется с использованием HMAC-SHA256,. |
<ключ> | ТЕКСТ | Секретный ключ,с помощью которого необходимо сгенерировать хэш. |
<данные> | ТЕКСТ | Исходный текст,соответствующий хэш которого необходимо вычислить. |
TEXT | Тип,в котором должен быть представлен сгенерированный хэш.По умолчанию тип вывода —base64. допустимых значений: |
Пример 1.
Генерация хэша в формате base64 с использованием алгоритма HMAC-SHA256Следующий скрипт возвращает хеш,сгенерированный с использованием алгоритма HMAC-SHA256 для текста —My#New#Passwordс ключом —Используйте меня для создания хэша в форматеbase64 :
ответ=zoho.шифрование.hmacsha256("Используйте меня для генерации хэша","Мой#Новый#Пароль");
где:
ТЕКСТ,представляющий хеш-значение,возвращаемое этой задачей.Здесь возвращенный хэш edYCyxkU4jL2dEjEDO8aUy8WZrpKRvQquNpgKUqe5vA=.
"Используйте меня для создания хэша"
ТЕКСТ,представляющий секретный ключ,с помощью которого создается хэш.
ТЕКСТ,представляющий исходный текст,соответствующий хэш которого необходимо вычислить.
Пример 2.Создание хэша в шестнадцатеричном формате с использованием алгоритма HMAC-SHA256 сгенерировать хэш
в шестнадцатеричном формате:response=zoho.