Что такое код filectime

Содержание

Что такое код filectime

Структура FILETIME — 64-битовое значение, представляющее число интервалов по 100 наносекунд с 1 января 1601 (универсальное глобальное время (UTC)).

Синтаксис

Члены структуры

Младшая часть файлового времени.

Старшая часть файлового времени.

Замечания

Чтобы преобразовать структуру FILETIME во время, которое легко показать на экране для пользователя, используйте функцию FileTimeToSystemTime.

Не рекомендуется, чтобы Вы добавляли и вычитали значения из структуры FILETIME, чтобы получить относительное время. Вместо этого Вы должны:

  • Скопировать получающуюся структуру FILETIME в структуру ULARGE_INTEGER.
  • Используйте обычную 64-битовую арифметическую операцию со значением ULARGE_INTEGER.

То есть, Вы должны скопировать нижнюю и старшую части файлового времени в структуру ULARGE_INTEGER, выполнить 64-битовую арифметическую операцию в члене структуры QuadPart и скопировать члены структуры LowPart и HighPart в структуру FILETIME.

Не приводите указатель на структуру FILETIME, или на ULARGE_INTEGER*, или на значение __ int64* , потому что это может вызвать ошибки выравнивания в 64-битовом Windows.

Не все файловые системы могут сделать запись создания и времени последнего доступа к файлу, и не все файловые системы делают запись их в той же самой манере. Например, в NT FAT у времени создания разрешающая способность 10 миллисекунд, у времени записи разрешающая способность 2 секунды, а у времени доступа разрешающая способность 1 день (фактически дата доступа. На NTFS у времени доступа разрешающая способность 1 час. Поэтому, функция GetFileTime, возможно, не сможет возвратить ту же самую информацию о файловом времени, при использовании функции SetFileTime. Кроме того, FAT делает запись времени на диске в формате местного времени. Однако, NTFS делает запись времени на диске в универсальном глобальном времени (UTC). Для получения дополнительной информации, см. статью Файловое время.

filectime

(PHP 4, PHP 5, PHP 7)

filectime — Возвращает время изменения индексного дескриптора файла

Описание

Возвращает время изменения индексного дескриптора (inode) файла.

Список параметров

Возвращаемые значения

Возвращает время последнего изменения файла, или FALSE в случае возникновения ошибки. Время возвращается в формате временной метки Unix.

Примеры

Пример #1 Пример использования функции filectime()

// Пример вывода: Файл somefile.txt в последний раз был изменен: December 29 2002 22:16:23.

$filename = ‘somefile.txt’ ;
if ( file_exists ( $filename )) <
echo «Файл $filename в последний раз был изменен: » . date ( «F d Y H:i:s.» , filectime ( $filename ));
>

Ошибки

В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .

Примечания

Примечание. На большинстве платформ Unix, файл считается измененным, если изменены данные его индексного дескриптора, что включает информацию о правах на файл, о его владельце, группе и другие метаданные, содержащиеся в индексном дескрипторе. Обратитесь также к описаниям функций filemtime() (данная функция полезна для создания сообщений типа: «Последнее обновление от . » на веб-страницах) и fileatime() .

Учтите также, что в некоторых описаниях работы Unix ctime представляется как время создания файла. Это неверно. В большинстве файловых систем Unix понятие времени создания файла отсутствует.

Учтите, что обработка времени может отличаться в различных файловых системах.

Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache() .

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обертками url. Список оберток, поддерживаемых семейством функций stat() , смотрите в разделе Поддерживаемые протоколы и обертки.

Смотрите также

  • filemtime() — Возвращает время последнего изменения файла

Функция Filemtime

Очень часто бывает нужно узнать время создания или редактирования отдельного файла. Это нужно, например, для того, что бы в списку сначала были новые страницы или последние отредактированы, также для других целей.

Для этого в PHP существует функция Filemtime:
Данная функция возвращает время последнего изменения указанного файла Filename или возвратит FALSE в случае возникновения ошибки. Также функция не применима для работы с удаленными файлами, поскольку указанный файл должен быть доступен через файловую систему сервера.

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

Linux.yaroslavl.ru

Учебник РНР
Назад Вперёд

filectime — получает inode-вермя изменения файла.

Описание

int filectime (string filename)

Возвращает время последнего изменения файла или FALSE — при возникновении ошибки. Время возвращается как Unix timestamp.

Результаты работы этой функции кэшируются. См. clearstatcache() .

Примечание: в большинстве систем Unix файл считается изменённым, когда изменены его inode-данные; то есть, когда permissions, owner, group или другие метаданные из inode обновились. См. также filemtime() (которую вы, возможно, будете использовать, если захотите создать футэр «Last Modified» на web-странице) и fileatime() .

Заметьте также, что в некоторых текстах Unix ctime файла называется временем создания файла. Это неверно. В большинстве Unix-систем нет времени создания Unix-файлов.

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Filectime для http

21.12.2015, 02:38

HTTP header для отправки файлы и html
Добрый день! Делаю тестовое задание по плюсам, сервер который по запросу браузера возвращает файл.

File_get_contents failed to open stream: HTTP request failed! HTTP/1.1 505
Ребята подскажите пожалуйста. Использую фреймворк Yii. Пишу небольшой парсер. Все вроде бы.

Простой сервлет HTTP Status 405 — HTTP method GET is not supported by this URL
Здравствуйте,начал изучение сервлетов.Делал все последовательно как в примере.

21.12.2015, 05:25 2

Решение

1. Возможно php у вашего провайдера не поддерживает обёртки wrappers (кстати https там нет)

2. По вашему url //ru.wikipedia.org/wiki/%D0%A2-34#/media/File:T-34_Model_1940.jpg отдаётся html страница, а картинка выводится в результате работы Javascript’а для хэш-тэга #/media/File:T-34_Model_1940.jpg
Реальный url картинки — https://upload.wikimedia.org/wikiped. Model_1940.jpg (посмотреть его можно кликнув правой клавишей по картинке -> Копировать ссылку на изображение) .
Попробуйте вызвать filectime() для этого url.

3. Если не получится п.2, дату изменения картинки можно получить из HTTP-заголовка:

21.12.2015, 16:50 [ТС] 3

Подскажите как получить http заголовок, если можно пример

Добавлено через 6 часов 15 минут
get_headers

23.12.2015, 02:38 4
23.12.2015, 02:38
23.12.2015, 02:38

HTTP запрос через Apache HTTP Client ничего не возвращает
У меня есть один сайт. Простой сайт на php. И есть второй сайт, где используется java на JBoss. Я.

Как добавить http авторизацию (http authorization header) при работе с web-сервисом?
Добрый день! Проблема такая. Есть веб-сервис который при подключения требует авторизацию. Скачал.

Функция PHP filectime ()

Определение и использование

filectime () возвращает указанный файл Последнее изменение.

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

В случае успеха, функция возвращает метку времени Unix в виде файла последнего изменения. Если это не удается, он возвращает FALSE.

грамматика

参数 描述
filename 必需。规定要检查的文件。

Советы и примечания

Примечание: Результаты этой функции кэшируются.Используйте clearstatcache (), чтобы очистить кэш.

Совет: Используйте функцию filemtime () , чтобы вернуть содержимое файла последнего изменения.

filemtime/filectime в будущем — насколько корректно?

Стоит задача хранения файлов кеша и удаления по исчерпании времени хранения. Файлов много, так что очевидное решение — хранение информации о файлах кеша в БД и удаление файлов по выборке устаревших.

Но случается так, что по тем или иным сбоям часть файлов оказывается не удалённой, хотя из БД запись уже исчезнет. Бывает редко, но случается. И периодически нужно проверять их на такие потери.

Кроме того, иногда полезно посмотреть какие-то файлы на диске «вручную», не заглядывая в БД увидеть, когда записаны, сколько осталось храниться. Когда записаны — понятно, достаточно по прямому назначению использовать filemtime. А вот с истечением срока хранения. В случае файлов HTML я использую прямую запись в виде комментария. Но что делать с картинками? JSON?

xattr в общем случае нет, да и накладно искать по ним (вроде, ФС эти атрибуты не индексируют?)

Сейчас пришла в голову мысль — а что, если, например, filectime прописать с указанием времени истечения (т.е. в нормальном состоянии — в будущем)? Тогда и состояние по stat легко увидеть, и очистить устаревшие прямо через find можно (если ctime стало прошлым).

Какие могут быть подводные камни? Есть ли более изящное решение, или этот вариант не плох?

filectime — это что, change или create time? И как вы собраетесь его менять?

А первая же проверка диска, ЕМНИП, вернёт все атрибуты из будущего в текущее время. Причём, проверка не обязательно из-за некорректного отключения питания, дотстаточно штатного ребута, по умолчанию в ext2 и потомках установлениа проверка через двадцать или около того монтирований или полгода без проверки.

filectime — это что, change или create time?

В Linux есть change, но нет create :)

А первая же проверка диска, ЕМНИП, вернёт все атрибуты из будущего в текущее время

Проверки диска дату не трогают, проверено многократно :)

Рад за вас, что вам так весело, но всё таки, вы не ответили на вопрос о том, чем вы собрались изменять ctime.

Если счиать что современный linux это ext4, то очень давно есть create time, cp и атрибуты файла . Я тут просто надеялся, что у гентушников, которые впереди всех, уже давно всё подпаченно, чтобы create time можно было видеть через обычные команды, а не только через debugfs, а получается, что они даже не в курсе.

Пока что проверки не трогают, хотя вот есть такой патч https://lkml.org/lkml/2013/11/13/43 , не знаю, принят ли он, да и 2311 год не скоро, но кто знает :-) В том плане, что вдруг кому из создателей e2fsck захочется проверять даты и исправлять их, и тогда ваша система сломается, удалит все файлы и придётся придумывать что-то другое.

Я бы использовал xattr или так бы и хранил в БД и отдельный скрип для проверки что содержимое БД синхрнонизированно с диском, может быть, скрипт-обёртка над stat, выдающий ещё и время хранения по результату запроса в БД.

но всё таки, вы не ответили на вопрос о том, чем вы собрались изменять ctime

Это же вопрос общей концепции. Ок, не ctime, а atime. Так — лучше?

Я тут просто надеялся, что у гентушников, которые впереди всех, уже давно всё подпаченно

Не знаю, что там у гентушников, у меня эта задача стоит на референсных Ubuntu и CentOS.

Я бы использовал xattr или так бы и хранил в БД

В первом сообщении я писал и про xattr, и про БД.

Но случается так, что по тем или иным сбоям часть файлов оказывается не удалённой, хотя из БД запись уже исчезнет.

Так может случаться потому, что удаление файла и записи из БД — не одна атомарная операция (когда, например, запись удаляется даже при ошибке удаления файла).

Есть ли более изящное решение, или этот вариант не плох?

Этот вариант плох потому, что не стоит хранить признаки удаления данных за пределами ответственности удаляющего кода. То есть, по ФС с данными лазят все кому не лень (демоны, юзеры и т.п.) и могут сотворить с этими признаками что угодно. А ты потом по ним решаешь, удалять данные или нет. С таким же успехом можно удалять в зависимости от $RANDOM.

Чтобы не мучиться со связыванием и синхронизацией этих данных с файлами на ФС, почему бы не хранить их прямо в именах файлов? Тем более, что речь идёт о файлах некоего кеша, а не произвольных пользовательских.

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

На референсный Ubuntu и CentOS ФС будет смонтирована с noatime? Хотя по умолчу relatime, тоже, должен подойдйти. Попробуйте, потом раскажите.

А насчёт xattr я не понял, где и чем она не индексируется? SeLinux живёт в xattr и ничего, как-то работает.

Как вывести дату создания файла в php?

Добрый вечер уважаемые знатоки!
Вывод создания файла осуществляю с помощью вот такого вот кода:
$filedata = date («d.m.y», filemtime($filename));
Если я скачал этот файл или зашел в него или что-либо поменял в нем, то отображение даты СОЗДАНИЯ файла будет именно это время. Пример:

Вывод будет 19.09.2020
Вопрос: как сделать так, чтобы было отображена только дата создания (12.09.2020), а не 19.09.2020?
Или вот пример:

Выводится будет тоже дата 19.09.2020.
Как вывести 15.09.2020?
Большое спасибо за помощь!

  • Вопрос задан более трёх лет назад
  • 2522 просмотра

Это скорее всего то, что нужно. Для Windows вернет дату создания файла. Для *nix дату изменения, так как в *.nix-ах дату создания файла, как таковую, получить нельзя. Стоит учесть то, что в некоторых описаниях на *.nix таки можно увидеть строчку «дата создания файла», но не ведитесь, для большинства файловых ситем на *nix-ах это не имеет место быть, там скорее всего выводится именно дата изменения.

Кроссплатформенный вариант — через БД
Вариант без использования БД — хранить дату создания файла непосредственно в его имени, например в виде unixtimestamp в начале или в конце

Коды в SMS небезопасны — рекомендуем пользоваться другими вариантами двухфакторной аутентификации

За последние пару лет идея двухфакторной аутентификации, о которой так долго говорили гики, сильно продвинулась в массы. Однако до сих пор в большинстве случаев речь идет о двухфакторной аутентификации при помощи одноразовых паролей, приходящих в SMS. А это, к сожалению, не очень-то надежный вариант. Вот что может пойти не так:

  • Пароль в SMS можно подсмотреть, если у вас включен показ уведомлений на экране блокировки.
  • Даже если показ уведомлений отключен, можно извлечь SIM-карту из смартфона, установить в другой смартфон и принять SMS с паролем.
  • SMS с паролем может перехватить пробравшийся в смартфон троян.
  • Также с помощью различных махинаций (убеждение, подкуп, сговор и так далее) можно заполучить новую SIM-карту с номером жертвы в салоне сотовой связи. Тогда SMS будут приходить на эту карту, а телефон жертвы просто не будет связываться с сетью.
  • Наконец, SMS с паролем может быть перехвачена через фундаментальную уязвимость в протоколе SS7, по которому эти SMS передаются.

Надо заметить, что даже самый трудоемкий и высокотехнологичный из перечисленных методов перехвата пароля в SMS — с помощью взлома протокола SS7 — уже был использован на практике. Так что речь не о теоретической возможности возникновения неприятностей, а о вполне практической угрозе.

В общем, пароли в SMS — это не очень-то безопасно, а иногда даже и очень небезопасно. Поэтому есть смысл озаботиться поиском альтернативных вариантов двухэтапной аутентификации, о чем мы сегодня и поговорим.

Одноразовые коды в файле или на бумажке

Наиболее простая замена одноразовым паролям, присылаемым в SMS, — это те же самые одноразовые пароли, но заготовленные заранее. Это не самый плохой вариант, особенно для тех сервисов, в которых вам надо авторизовываться сравнительно редко. Собственно, даже для того же «Фейсбука» этот метод вполне может подойти, особенно в качестве резервного способа входа.

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

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

Приложения для двухфакторной аутентификации

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

Как работают приложения-аутентификаторы

Работают приложения для двухфакторной аутентификации очень просто. Вот что придется сделать:

  • устанавливаете на смартфон приложение для двухфакторной аутентификации;
  • заходите в настройки безопасности сервиса, который среди опций для двухфакторной аутентификации предлагает использовать такие приложения;
  • выбираете двухфакторную аутентификацию с помощью приложения;
  • сервис покажет вам QR-код, который можно отсканировать прямо в 2FA-приложении;
  • сканируете код приложением — и оно начинает каждые 30 секунд создавать новый одноразовый код.

Коды создаются на основе ключа, который известен только вам и серверу, а также текущего времени, округленного до 30 секунд. Поскольку обе составляющие одинаковы и у вас, и у сервиса, коды генерируются синхронно. Этот алгоритм называется OATH TOTP (Time-based One-time Password), и в подавляющем большинстве случаев используется именно он.

Также существует альтернатива — алгоритм OATH HOTP (HMAC-based One-time Password). В нем вместо текущего времени используется счетчик, увеличивающийся на 1 при каждом новом созданном коде. Но этот алгоритм редко встречается в реальности, поскольку при его использовании гораздо сложнее обеспечить синхронное создание кодов на стороне сервиса и приложения. Проще говоря, есть немалый риск, что в один не очень прекрасный момент счетчик собьется и ваш одноразовый пароль не сработает.

Так что можно считать OATH TOTP де-факто индустриальным стандартом (хотя формально это даже не стандарт, на чем создатели этого алгоритма очень настаивают в его описании).

Совместимость приложений для двухфакторной аутентификации и сервисов

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

Как и в любом добротном правиле, в этом тоже есть определенное количество исключений. Некоторые сервисы по каким-то причинам, ведомым только им одним, предпочитают делать свои собственные приложения для двухфакторной аутентификации, которые работают только с ними. Более того, сами сервисы не работают ни с какими другими приложениями, кроме своих собственных.

Особенно это распространено среди крупных издателей компьютерных игр — например, существуют несовместимые со сторонними сервисами приложения Blizzard Authenticator, Steam Mobile с встроенным аутентификатором Steam Guard, Wargaming Auth и так далее. Для этих сервисов придется ставить именно эти приложения.

Также по этому странному пути пошла Adobe, разработавшая Adobe Authenticator, который работает только с аккаунтами AdobeID. Но при этом вы можете использовать для защиты AdobeID и другие аутентификаторы, так что вообще непонятно, ради чего было городить огород.

Так или иначе, большинство нормальных ИТ-компаний не ограничивает пользователей в выборе 2FA-приложения. И даже если по каким-то соображениям им хочется контролировать этот процесс и создать свое приложение, то чаще всего они позволяют защищать с его помощью не только «свои» аккаунты, но и учетные записи сторонних сервисов.

Поэтому просто выбирайте приложение-аутентификатор, которое вам больше нравится по набору дополнительных функций — оно будет работать с большинством сервисов, которые вообще поддерживают 2FA-приложения.

Лучшие приложения для двухфакторной аутентификации

Выбор 2FA-приложений на удивление велик: поиск по запросу «authenticator» в Google Play или Apple App Store выдает не один десяток результатов. Мы не советуем устанавливать первое попавшееся приложение — это может быть небезопасно, ведь, по сути, вы собираетесь доверить ему ключи от своих аккаунтов (оно не будет знать ваши пароли, конечно, но ведь 2FA вы добавляете именно потому, что пароли имеют свойство утекать). В общем, стоит выбирать из приложений, созданных крупными и уважаемыми разработчиками.

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

1. Google Authenticator

Поддерживаемые платформы: Android, iOS

Как отмечают буквально все публикации, Google Authenticator — это самое простое в использовании из всех существующих приложений для двухфакторной аутентификации. У него даже настроек нет. Все, что можно сделать, — это добавить новый токен (так называется генератор кодов для отдельного аккаунта) или удалить один из имеющихся. А чтобы скопировать код в буфер обмена, достаточно коснуться его пальцем на сенсорном экране смартфона или планшета. Все!

Однако у такой простоты есть и недостаток: если вам что-то не нравится в интерфейсе или хочется от аутентификатора чего-то большего — придется устанавливать другое приложение.

+ Очень просто использовать.

2. Duo Mobile

Поддерживаемые платформы: Android, iOS

Duo Mobile также крайне прост в использовании, минималистичен и лишен дополнительных настроек. По сравнению с Google Authenticator у него есть одно преимущество: по умолчанию Duo Mobile скрывает коды — чтобы увидеть код, надо нажать на конкретный токен. Если вы, как и я, испытываете дискомфорт каждый раз, когда открываете аутентификатор и показываете всем окружающим кучу кодов от всех своих аккаунтов сразу, то вам эта особенность Duo Mobile наверняка понравится.

+ По умолчанию скрывает коды.

3. Microsoft Authenticator

Поддерживаемые платформы: Android, iOS

В Microsoft тоже не стали усложнять и сделали свой аутентификатор на вид очень минималистичным. Но при этом Microsoft Authenticator заметно функциональнее, чем Google Authenticator. Во-первых, хоть по умолчанию все коды показываются, но каждый из токенов можно отдельно настроить так, чтобы при запуске приложения код был скрыт.

Во-вторых, Microsoft Authenticator упрощает вход в аккаунты Microsoft. В этом случае после ввода пароля достаточно будет нажать в приложении кнопку подтверждения входа — и все, можно даже не вводить одноразовый код.

+ Можно настроить, чтобы коды скрывались.
+ Дополнительные возможности для входа в аккаунты Microsoft.

4. FreeOTP

Поддерживаемые платформы: Android, iOS

Есть четыре причины, по которым вам может понравиться этот аутентификатор, разработанный Red Hat. Во-первых, это ваш выбор, если вы любите программное обеспечение с открытым кодом. Во-вторых, это самое маленькое приложение из всех рассматриваемых — версия для iOS занимает всего 750 Кбайт. Для сравнения: минималистичный Google Authenticator занимает почти 14 Мбайт, а приложение Authy, о котором мы поговорим ниже, — аж 44 Мбайта.

В-третьих, по умолчанию приложение скрывает коды и показывает их только после касания. Наконец, в-четвертых, FreeOTP позволяет максимально гибко конфигурировать токены вручную, если вам это зачем-нибудь нужно. Разумеется, обычный способ создания токена с помощью сканирования QR-кода тоже поддерживается.

+ По умолчанию скрывает коды.
+ Приложение занимает всего 700 Кбайт.
+ Открытый код.
+ Максимум настроек при создании токена вручную.

5. Authy

Самое навороченное из приложений для двухфакторной аутентификации, основным достоинством которого является то, что все токены хранятся в облаке. Это позволяет получить доступ к токенам с любого из ваших устройств. Заодно это упрощает переезд на новые устройства — не придется заново активировать 2FA в каждом сервисе, можно продолжить пользоваться существующими токенами.

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

Основной недостаток Authy состоит в том, что приложение с ходу требует завести аккаунт, привязанный к вашему телефонному номеру, — без этого просто не получится начать с ним работать.

+ Токены хранятся в облаке, что позволяет использовать их на всех своих устройствах.
+ По той же причине очень удобно переезжать на новое устройство.
+ Вход в приложение защищен PIN-кодом или отпечатком пальца.
+ На экране показывается код только для последнего использованного токена.
+ В отличие от остальных приложений, поддерживает не только Android и iOS, но и Windows, macOS и Chrome.

− Требуется зарегистрироваться в Authy, используя номер телефона, — без этого приложение не работает.

6. «Яндекс.Ключ»

Поддерживаемые платформы: Android, iOS

На мой взгляд, по концепции «Яндекс.Ключ» — это самое удачное из существующих приложений для двухфакторной аутентификации. С одной стороны, оно не требует с ходу регистрироваться — можно начать им пользоваться с той же легкостью, как и Google Authenticator. С другой стороны, в нем есть несколько дополнительных возможностей, которые открываются тем, кто не поленится зайти в настройки.

Во-первых, «Яндекс.Ключ» можно «запереть» на PIN-код или отпечаток пальца. Во-вторых, можно создать в облаке «Яндекса» резервную копию токенов, защищенную паролем (а вот на этом этапе уже придется указать номер телефона), и восстановить ее на любом из используемых вами устройств. Точно так же можно будет перенести токены на новое устройство, когда понадобится переезжать.

Получается, что «Яндекс.Ключ» сочетает в себе простоту Google Authenticator и расширенную функциональность Authy — в зависимости от того, что вы предпочитаете. Единственный недостаток приложения — не вполне удобный для использования с большим количеством токенов интерфейс.

+ Минимализм на старте, расширенная функциональность доступна через настройки.
+ Создание резервных копий токенов в облаке для использования на нескольких устройствах и переезда на новые.
+ Вход в приложение защищен PIN-кодом или отпечатком пальца.
+ На экране показывается код только для последнего использованного токена.
+ Заменяет постоянный пароль к аккаунту «Яндекса».

− При большом количестве токенов не очень удобно искать нужный.

«Железные» аутентификаторы FIDO U2F: YubiKey и все-все-все

Если приложение, генерирующее одноразовые коды, кажется вам слишком эфемерным способом защитить свои аккаунты, и хочется чего-то более постоянного, надежного и материального — буквально запереть аккаунт на ключ и положить его в карман, — то у меня есть для вас хорошая новость: такой вариант также существует. Это аппаратные токены стандарта U2F (Universal 2nd Factor), созданного FIDO Alliance.

Как работают токены FIDO U2F

Аппаратные U2F-токены очень полюбились специалистам по безопасности — в первую очередь потому, что с точки зрения пользователя они работают очень просто. Для начала работы достаточно подключить U2F-токен к вашему устройству и зарегистрировать его в совместимом сервисе, причем делается это буквально в пару кликов.

Впоследствии при необходимости подтвердить вход в этот сервис нужно будет подключить U2F-токен к тому устройству, с которого вы входите, и нажать на токене кнопку (в некоторых устройствах — ввести PIN или приложить палец к сканеру). Все — никаких сложных настроек, ввода длинных последовательностей случайных символов и прочих танцев с бубном, которые обычно все себе представляют при упоминании слова «криптография».

Вставьте ключ и нажмите кнопку — и это действительно все

При этом «под капотом» все устроено очень умно и криптографически надежно: при регистрации токена на сервисе создается пара криптографических ключей — приватный и публичный. Публичный сохраняется на сервере, а приватный хранится в защищенном хранилище Secure Element, которое является сердцем U2F-токена, — и этот ключ никогда не покидает устройство.

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

Какими бывают U2F-устройства

Наиболее известный и распространенный пример U2F — это «ключи» YubiKey, которые производит компания Yubico. Собственно, она и стояла у истоков этого стандарта, но предпочла сделать его открытым, для чего и был создан FIDO Alliance. А поскольку стандарт открытый, вы не ограничены в выборе: U2F-совместимые устройства производят и продают разные компании — в онлайн-магазинах можно найти множество разнообразных моделей.

YubiKey — вероятно, самые популярные U2F-токены

Например, Google недавно представила свой комплект аппаратных аутентификаторов Google Titan Security Keys. На самом деле это ключи производства Feitian Technologies (второй по популярности производитель U2F-токенов после Yubico), для которых в Google написали собственную прошивку.

Разумеется, все аппаратные аутентификаторы, совместимые со стандартом U2F, будут с одинаковым успехом работать со всеми сервисами, которые также с этим стандартом совместимы. Однако у разных моделей есть несколько важных различий, и самое важное из них — это интерфейсы, которыми оборудован «ключ». От этого напрямую зависит, с какими устройствами он сможет работать:

USB — для подключения к компьютерам (Windows, Mac или Linux — неважно, «ключи» работают без установки каких-либо драйверов). Помимо обычного USB-A бывают «ключи» с USB-C.

NFC — необходим для использования со смартфонами и планшетами на Android.

Bluetooth — понадобится на тех мобильных устройствах, в которых нет NFC. К примеру, аутентификатор с Bluetooth все еще нужен владельцам iPhone: несмотря на то, что в iOS уже разрешили приложениям использовать NFC (до 2020 года это было позволено только Apple Pay), разработчики большинства совместимых с U2F приложений еще не воспользовались этой возможностью. У Bluetooth-аутентификаторов есть пара минусов: во-первых, их нужно заряжать, а во-вторых, их подключение занимает гораздо больше времени.

В базовых моделях U2F-токенов обычно есть только поддержка собственно U2F — такой ключ обойдется в $10–20. Есть устройства подороже ($20–50), которые заодно умеют работать в качестве смарт-карты, генерировать одноразовые пароли (в том числе OATH TOTP и HOTP), генерировать и хранить ключи PGP-шифрования, могут использоваться для входа в Windows, macOS и Linux и так далее.

Что же выбрать: SMS, приложение или YubiKey?

Универсального ответа на этот вопрос не существует — для разных сервисов можно использовать разные варианты двухфакторной аутентификации в различных сочетаниях. Например, наиболее важные аккаунты (скажем, вашу основную почту, к которой привязаны остальные учетные записи) стоит защитить по максимуму — запереть на «железный» U2F-токен и запретить любые другие опции 2FA. Так можно быть уверенным, что никто и никогда не получит доступ к аккаунту без этого токена.

Хороший вариант — привязать к аккаунту два «ключа», как это делается с ключами от автомобиля: один всегда с собой, а другой лежит в надежном месте — на случай, если первый потеряется. При этом «ключи» могут быть разного типа: скажем, приложение-аутентификатор на смартфоне в качестве основного и U2F-токен или листочек с одноразовыми паролями, лежащий в сейфе, в качестве резервного средства.

Так или иначе, главный совет — по возможности избегать использования одноразовых паролей в SMS. Правда, получится это не всегда: например, финансовые сервисы в силу своей консервативности продолжают использовать SMS и крайне редко позволяют пользоваться чем-либо еще.

filectime() [function.filectime]: stat не удалось выполнить

im, имеющих эту проблему в приложении на основе Codeigniter.

  • Вероятно, разрешение было отклонено?
  • Разве вы не называете это без аргументов?

Нашел это в поисках ответа:

Если целочисленный тип PHP составляет всего 32 бита в вашей системе, filemtime() будет работать с файлами более 2 ГБ с предупреждением «stat failed». Все команды stat() -related будут демонстрировать одинаковое поведение.

В качестве обходного пути вы можете вызвать команду stat stat, чтобы получить время модификации файла:

В FreeBSD: $ mtime = exec (‘stat -f% m’. Escapeshellarg ($ path));

В Linux: $ mtime = exec (‘stat -c% Y’. Escapeshellarg ($ path));

Илон Маск рекомендует:  Свойство text-shadow
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL