Карма ошибка создания файла протокола код ошибки 13
Обновлено: 18.06.2024
Почти все разработчики так или иначе постоянно работают с api по http, клиентские разработчики работают с api backend своего сайта или приложения, а бэкендеры "дергают" бэкенды других сервисов, как внутренних, так и внешних. И мне кажется, одна из самых главных вещей в хорошем API это формат передачи ошибок. Ведь если это сделано плохо/неудобно, то разработчик, использующий это API, скорее всего не обработает ошибки, а клиенты будут пользоваться молчаливо ломающимся продуктом.
За 7 лет я как поддерживал множество legacy API, так и разрабатывал c нуля. И я поработал, наверное, с большинством стратегий по возвращению ошибок, но каждая из них создавала дискомфорт в той или иной мере. В последнее время я нащупал оптимальный вариант, о котором и хочу рассказать, но с начала расскажу о двух наиболее популярных вариантах.
Если у вас примитивная бизнес-логика или API из 5 url, то в принципе это нормальный подход. Однако как-только бизнес-логика станет сложнее, то начнется ряд проблем.
REST скорее концепция, чем формат общения из чего следует неоднозначность использования статусов. Разработчики используют статусы как им заблагорассудится. Например, некоторые API при отсутствии сущности возвращают 404 и текст ошибки, а некоторые 200 и пустое тело.
Бэкенд разработчику в проекте непросто выбрать статус для ошибки, а клиентскому разработчику неочевидно какой статус предназначен для того или иного типа ошибок бизнес-логики. По-хорошему в проекте придется держать enum для того, чтобы описать какие ошибки относятся к тому или иному статусу.
Когда бизнес-логика приложения усложняется, начинают делать как-то так:
№2: На все 200
Есть другой подход, даже более старый, чем REST, а именно: на все ошибки связанные с бизнес-логикой возвращать 200, а уже в теле ответа есть информация об ошибке. Например:
На самом деле формат зависит от вас или от выбранной библиотеки для реализации коммуникации, например JSON-API.
В некоторых случаях, если есть библиотека десериализации данных, она может взять часть работы на себя. Писать SDK вокруг такого подхода проще нежели вокруг той или иной имплементации REST, ведь реализация зависит от того, как это видел автор. Кроме того, теперь никто не вызовет случайное срабатывание alert в мониторинге из-за того, что выбрал неудачный код ошибки.
Но неудобства тоже есть:
Избыточность полей при передаче данных, т.е. нужно всегда передавать 2 поля: для данных и для ошибки. Это усложняет чтение логов и написание документации.
При использовании средств отладки (Chrome DevTools) или других подобных инструментов вы не сможете быстро найти ошибочные запросы бизнес логики, придется обязательно заглянуть в тело ответа (ведь всегда 200)
нельзя делать повторы для неудавшихся GET запросов (на backend) на реверс-прокси (например, nginx) по указанной выше причине
имеются проблемы с документированием – swagger и ApiDoc не подходят, а удобных аналогов я не нашел
Итог: Для сложной бизнес-логики с большим количеством типов ошибок такой подход лучше, чем расплывчатый REST, не зря в проектах c “разухабистой” бизнес-логикой часто именно такой подход и используют.
№3: Смешанный
400 – ошибка бизнес логики
остальное ошибки в транспорте
Мы можем расширять объект ошибки для детализации проблемы, если хотим. С мониторингом все как во втором варианте, дописывать парсинг придется, но и риска “стрельбы” некорректными alert нету. Для документирования можем спокойно использовать Swagger и ApiDoc. При этом сохраняется удобство использования инструментов разработчика, таких как Chrome DevTools, Postman, Talend API.
Итог: Использую данный подход уже в нескольких проектах, где множество типов ошибок и все крайне довольны, как клиентские разработчики, так и бэкендеры. Внедрение новой ошибки не вызывает споров, проблем и противоречий. Данный подход объединяет преимущества первого и второго варианта, при этом код более читабельный и структурированный.
Самое главное какой бы формат ошибок вы бы не выбрали лучше обговорить его заранее и следовать ему. Если эту вещь пустить на “самотек”, то очень скоро обработка ошибок в проекте станет невыносимо сложной для всех.
P.S. Иногда ошибки любят передавать массивом
Но это актуально в основном в двух случаях:
Когда наш API выступает в роли сервиса без фронтенда (нет сайта/приложения). Например, сервис платежей.
Когда в API есть url для загрузки какого-нибудь длинного отчета в котором может быть ошибка в каждой строке/колонке. И тогда для пользователя удобнее, чтобы ошибки в приложении сразу показывались все, а не по одной.
Нужно смотреть коды ошибок. Перед тем как начать устранять ошибки, следует обновить последнюю версию используемого софта, будь то 7Zip или WinRaR. Поэтому прям сейчас, скачайте последнюю версию программы и установите её заново. Можно попробовать вообще удалить старую программу перед установкой.
-1
Продолжение уведомление такое ERROR: archive data corrupted. Толкование неисправности такое:
C:\Users\Дмитрий\AppData\Local\Temp
- Рекомендовано выбирать путь, состоящий полностью из латиницы.
В последнем случае можно изменить путь во время установки или же изменить сам Temp:
-2 и -3
Кроме установки архиваторов можно реализовать следующее:
- Также смотрите, есть ли в пути любые буквы и символы, кроме латиницы.
- Деактивируйте антивирус и запускайте exe-файл от имени админа.
В Windows 7 символ 4 значит, что технология DEP деактивированная для инсталляционного файла и ее нужно включить. Она опционально включена для служб и программ ОС. Для сторонних решений потребуется ее активировать:
Также, есть вероятность что архив был недокачан, либо антивирус удалил из него опасные (по мнению антивируса) компоненты. Что можно предпринять при установке игры, деактивировав антивирус:
- В архиваторе WinRaR запустите процесс восстановления целостности архива.
- При загрузке игры с торрента, обновите раздачу и запустите пересчет кеширования.
- Исключить из пути установки русские символы.
- Провести проверку накопителя на предмет ошибок, бэдов, битых секторов. Лучше всего использовать программу Victoria.
После диагностики повторите установку снова.
Седьмой код с 99.9% вероятностью сообщает, что неисправность проявляется из-за не докаченного архива. Если грузили торрентом, просто пересчитайте кэш. Также удостоверьтесь, что архиватор последней версии.
Проблема скорей всего связана с неверной контрольной суммой. Она не совпадает с той, которая должна быть при целостности компонентов инсталлятора:
- Сделайте апдейт хеша файлов в торренте.
- Проверьте диск на наличие нужного места под установку.
Если места на накопителе мало, рекомендуется что-то удалить или отменить установку.
Unarc.dll вернул код ошибки -14 с припиской:
- Не совпадении хеша архива. Проверьте, цел ли файл установки, возможно скачивая его были допущены ошибки. Проверяйте кряк, вернее, его наличие. Его может невзлюбить защитник Windows.
- Защитник или другой Антивирус мог поместить файл в карантинную зону, поэтому проверьте ее, и, если понадобится, верните недостающий файл в директорию.
- Перед установкой попробуйте отключить антивирус.
Где находится Unark.dll?
Системный файл доступен в директории:
С:/Windows/system32/unarc.dll
Как выглядит ошибка credssp
Перед тем, как я покажу вам известные мне методы ее устранения, я бы как обычно хотел подробно описать ситуацию. Вчера при попытке подключиться к своему рабочему компьютеру, работающему на Windows 10 1709, с терминального стола, входящего в RDS ферму на Windows Server 2012 R2, я получил ошибку после ввода логина и пароля:
An authentication error has occurred. The function requested is not supported. Remote computer name. This coild be to CredSSP encryption oracle remediation.
Ну и конечно в русском исполнении:
Произошла ошибка при проверке подлинности. Указанная функция не поддерживается. Удаленный компьютер имя. Причиной ошибки может быть исправление шифрования CredSSP
Получается двоякая ситуация, что RDP как бы работает, но вот по какой-то причине ваши учетные данные на принимающей стороне не соответствуют, каким-то критериям, давайте разбираться, что это за зверь CredSSP.
Назначение CredSSP
Что такое CredSSP - это Win32 API, используемый системами Microsoft Windows для выполнения различных операций, связанных с безопасностью, таких как аутентификация. SSPI функционирует, как общий интерфейс для нескольких поставщиков поддержки безопасности (SSP). Поставщик поддержки безопасности - это библиотека динамической компоновки (DLL), которая делает один или несколько пакетов безопасности доступными для приложений.
C redSSP позволяет приложению делегировать учетные данные пользователя от клиента целевому серверу для удаленной аутентификации. CredSSP предоставляет зашифрованный канал протокола безопасности транспортного уровня . Клиент проходит проверку подлинности по зашифрованному каналу с использованием протокола SPNEGO (Simple and Protected Negotiate) с Microsoft Kerberos или Microsoft NTLM.
После проверки подлинности клиента и сервера клиент передает учетные данные пользователя на сервер. Учетные данные дважды шифруются с использованием ключей сеанса SPNEGO и TLS. CredSSP поддерживает вход в систему на основе пароля, а также вход в систему с использованием смарт-карт на основе X.509 и PKINIT.
Windows SSP
Следующие поставщики общих служб устанавливаются вместе с Windows:
Причины ошибки шифрования CredSSP
К сожалению 99% людей и администраторов совершают одну и туже ошибку, они сразу ставят обновления, не дождавшись пары дней после их выхода. Обычно этого времени хватает, чтобы вендор определил проблемы и отозвал глючное обновление.
Уязвимость в протоколе Credential Security Support Provider (CredSSP — провайдер поддержки безопасности учетных данных) допускала удаленный запуск произвольного кода на уязвимой системе и 8 мая 2018 г. Microsoft изменила уровень безопасности подключения с Vulnerable на Mitigated и начались проблемы подключения к удаленному рабочему столу по RDP. Ранее вы могли удаленно подключаться с обновленной машины к машинам без обновления безопасности, так сказать в мягком режиме. Однако с последним обновлением, Microsoft усилила безопасность, и вы больше не можете подключаться к компьютерам без обновления закрывающего брешь CVE-2018–0886.
Под раздачу попали буквально все, клиентские ОС Windows 7, Windows 8.1, Windows 10 с которых были попытки подключиться к RDS ферме или RemoteApp приложениям работающим на Windows Server 2008 R2 и выше. Если бы вы читали ветки обсуждений в эти дни, то вы бы поняли все негодование людей, особенно с запада.
Варианты исправления ошибки CredSSP
На самом деле вариантов много, есть правильные, есть и временные и обходные, которые нужно сделать быстро, чтобы хоть как-то работало, так как бизнес может в этот момент простаивать и терять деньги.
- Вы можете удалить новое обновление безопасности, самый плохой вариант, но в ответственные моменты, иногда используется, чтобы перенести работы на вечер или ночь
- Если нужно быстро получить доступ к серверу и избежать проверку подлинности credssp, то я вам советую отключить на принимающем подключении сервере галку NLA (Network Level Authentication) в русском варианте "Разрешить подключение только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети"
- То же быстрый метод и на массовое применение, это использование групповой политики, которая изменит шифрование Oracle Remediation
- Ну и самый правильный метод , это установка обновлений на все ваши системы
Отключаем credssp в Windows через NLA
Данный метод выхода из ситуации я бы рассматривал, как быстрое, временное решение, до того, как вы установите обновления безопасности. Чтобы разрешить удаленное подключение к серверу и избегать ситуации, что произошла ошибка при проверке подлинности credssp, сделайте вот что. Откройте свойства моего компьютера, попав в систему, так же можно нажать одновременно WIN+Pause Breake или как вариант в командной строке ввести control /name Microsoft.System. В окне "Система" находим пункт меню "Настройка удаленного доступа"
Снимите галку "Разрешить подключение только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети"
После этого вы легко сможете подключиться к данному компьютеру или серверу, но как быть что вы не можете туда попасть и снять эту галку, тут нам на помощь придет реестр Windows. Вы можете удаленно создать нужные ключи реестра, которые отключат галку NLA или политику CredSSP. Для этого вы можете пойти двумя путями:
- Использовать сетевой реестр Windows
- Использовать удаленное управление компьютером, например PsExec.exe, я вам с помощью него уже показывал, как открывать порты в брандмауэре, удаленно.
Давайте попробуем через удаленный реестр, для этого открываем Regedit, через окно "Выполнить".
Из меню "Файл" выберите пункт "Подключить сетевой реестр", далее найдите нужный вам сервер.
У вас подключится дополнительный реестр с двумя кустами. Переходите по пути (Если у вас не будет CredSSP\Parameters, то нужно будет их создать):
Тут вам необходимо создать REG_DWORD ключ с именем AllowEncryptionOracle и значением 2. В данном варианте политика CredSSP выставит Уязвимый уровень - это самый низкий уровень защиты. Это позволит вам подключаться к серверам удаленно, используя RDP. Однако это подвергнет серверы атакам.
Или можно так же отключить NLA, для этого найдите ветку реестра:
Найдите там ключ SecurityLayer и выставите ему значение 0, чтобы деактивировать Network Level Authentication.
Теперь то же самое вы можете выполнить и через PsExec.exe, выставив для CredSSP минимальный уровень защиты или же отключить NLA, для этого находясь в cmd в режиме администратора введите команду:
w10-cl01 - это имя компьютера.
Далее имея запущенный сеанс cmd для удаленного компьютера, выполните команду:
REG ADD HKLM\Software\Microsoft\Windows\ CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2 (0 вернет все как было)
Аналогично можно сделать и для отключения Network Level Authentication, команда будет такой:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0
Еще раз обращаю ваше внимание, что данный метод временный и самый не безопасный, применяемый в случаях, когда уже ничего сделать нельзя или дольше, а нужно уже вчера, обязательно установите все нужные обновления.
Отключаем шифрование credssp через GPO
Если у вас большая инфраструктура, в которой сотни компьютеров и сотни серверов, то вы можете до установки нужных обновлений в вечернее время, временно отключить новый уровень шифрования CredSSP и убрать ошибку "Удаленный компьютер имя. Причиной ошибки может быть исправление шифрования CredSSP". Для этого мы можем воспользоваться всеми плюсами доменной инфраструктуры Active Directory. Тут два варианта, вы можете создать массовую политику для распространения ее на нужные OU или если у вас требование для одного или двух локальных компьютеров, то на них можно запустить локальный редактор групповых политик, тем самым внеся изменения только на них.
Напоминаю, что оснастку управление групповой политикой вы можете найти на контроллере домена или компьютере с установленным пакетом RSAT, открыть ее можно через команду в окне "Выполнить" gpmc.msc. Если нужно открыть локальный редактор групповых политик, то в окне "Выполнить" введите gpedit.msc.
Вам необходимо перейти в ветку:
Конфигурация компьютера - Административные шаблоны - Система - Передача учетных данных - Исправление уязвимости шифрующего оракула (Computer Configuration - Administrative Templates - System - Credentials Delegation - Encryption Oracle Remediation
Открываем настройку "Исправление уязвимости шифрующего оракула (Encryption Oracle Remediation)". Включаем политику, у вас активируется опция "Уровень защиты", на выбор будет три варианта:
- Принудительно применять обновленные клиенты (Force Updated Clients) - она будет стоять по умолчанию из-за максимального уровня защиты, вам данную опцию нужно сменить. Это так сказать максимально безопасный уровень взаимодействия клиент, он должен быть в идеале, после установки обновлений на все сервера и компьютеры.
- Оставить уязвимость (Vulnerable) – клиенты могут подключаться на уязвимые машины.
- Уменьшить риск (Mitigated) – клиенты не могут подключаться к уязвимым серверам, но серверы могут принимать уязвимые клиенты.
Выбираем на время пункт "Оставить уязвимость (Vulnerable)". Сохраняем настройки.
После чего вам нужно обновить политику, для этого откройте командную строку и введите gpupdate /force. Если у вас не доменный компьютер, да и еще Windows 10 Home, которая не имеет встроенного локального редактора политик, то вам как я описывал выше, нужно производить правку реестра
REG ADD HKLM\Software\Microsoft\Windows\ CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2 (0 вернет все как было)
На просторах интернета ходит скрипт PowerShell, который поможет включить данную политику на всех компьютерах в Active Directory
Import-Module ActiveDirectory
$PSs = (Get-ADComputer -Filter *).DNSHostName
Foreach ($computer in $PCs) Invoke-Command -ComputerName $computer -ScriptBlock REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2
>
>
Самый правильный метод, это установка обновлений
Раньше были вот такие KB, но они со временем могут меняться свой номер, поэтому пройдите по ссылке выше, так будет надежнее.
Есть две основные причины этой ошибки: последнее обновление Windows 10 не было установлено правильно или некоторые системные файлы были повреждены или повреждены. Вот как один пользователь описывает эту проблему:
В Windows 10 эта ошибка также блокирует процесс печати, в результате чего пользователи не могут добавить принтер или использовать уже установленный.
Исправлено: дескриптор недействителен в Windows 10
Это заставит Windows восстанавливать поврежденные или поврежденные файлы обновления.
Узнайте все, что нужно знать об управлении учетными записями пользователей, из нашего замечательного руководства!
Решение 2. Загрузитесь в безопасном режиме и удалите обновления безопасности
1. Удерживая клавишу Shift, нажмите кнопку питания на экране.
2. Выберите опцию перезапуска, удерживая клавишу Shift
3. Выберите Устранение неполадок> Дополнительные параметры> Параметры запуска> нажмите Перезагрузить
4. Дождитесь перезагрузки Windows 10 и выберите Безопасный режим.
Многие пользователи сообщают, что кумулятивными являются накопительные обновления KB3135173 и KB3124262, и удаление этих двух обновлений устранило проблему.
Решение 3. Обновление Citrix VDA
Если вы используете VDA v7.7, загрузите более новые версии VDA 7.8 или более поздней версии, в которых содержится исправление. Для получения дополнительной информации и пошагового руководства перейдите на страницу поддержки Citrix.
Решение 1. Запустите полное сканирование системы .
Вредоносные программы могут вызвать различные проблемы на вашем компьютере, в том числе ошибки. Выполните полное сканирование системы, чтобы обнаружить любые вредоносные программы, работающие на вашем компьютере. Вы можете использовать встроенные в Windows антивирусные программы, Защитник Windows или сторонние антивирусные решения.
Решение 2. Обновите драйверы ПК .
Как обновить драйверы в Windows 10
Если вы хотите установить определенные драйверы, запустите диспетчер устройств. Разверните доступные категории и выберите устройство, для которого вы хотите обновить драйвер.
Третий вариант – загрузить доступные обновления драйверов непосредственно с веб-сайта производителя.
Обновите свои драйверы как профессионал с нашим исчерпывающим руководством!
Мы также настоятельно рекомендуем Модуль обновления драйверов TweakBit (одобрен Microsoft и Norton) для автоматической загрузки всех устаревших драйверов на ваш компьютер.
Это отличный инструмент, который сканирует обновления, а антивирус – на наличие угроз. Этот инструмент обеспечит безопасность вашей системы, поскольку вы можете вручную загрузить и установить неправильную версию драйвера.
Решение 3. Обновите свою ОС .
Убедитесь, что на вашем компьютере установлены последние обновления ОС Windows. В качестве напоминания, Microsoft постоянно выпускает обновления для Windows, чтобы улучшить стабильность системы и устранить различные проблемы.
Перейдите в Центр обновления Windows, проверьте наличие обновлений и установите доступные обновления.
Решение 4. Восстановите реестр .
Самый простой способ восстановить реестр – использовать специальный инструмент, такой как CCleaner. Не забудьте сначала сделать резервную копию реестра, если что-то пойдет не так.
Если вы не установили очиститель реестра на свой компьютер, ознакомьтесь с нашей статьей о лучших очистителях реестра для использования на ПК с Windows 10.
Вы также можете использовать средство проверки системных файлов Microsoft для проверки повреждений системных файлов. Вот как запустить сканирование SFC:
1. Перейдите в Пуск>, введите cmd >, щелкните правой кнопкой мыши Командную строку> выберите Запуск от имени администратора.
2. Теперь введите команду sfc/scannow
3. Дождитесь завершения процесса сканирования и перезагрузите компьютер. Все поврежденные файлы будут заменены при перезагрузке.
Решение 5. Загрузите универсальный драйвер печати HP
В качестве быстрого напоминания этот инструмент автоматически обнаруживает и настраивает поддерживаемые устройства HP и некоторые устройства не HP.
Вы можете загрузить универсальный драйвер печати HP с веб-сайта HP.
Решение 6. Удалите и переустановите Microsoft Print в PDF
Некоторые пользователи подтвердили, что удаление принтера и его повторная установка решают проблему, поэтому вы можете попробовать это.
Драйвер принтера поврежден? Вот пошаговое руководство по устранению проблемы!
Решение 1. Установите последние обновления или обновите до Windows 10 .
Microsoft по-прежнему предлагает Windows 10 в качестве бесплатного обновления с помощью помощника по обновлению для пользователей Windows 7 и Windows 8.1.
Если ваш компьютер совместим с Creators Update, нажмите кнопку обновления, чтобы установить его.
Решение 2. Обновите приложение, подверженное этой ошибке
Для этого вы можете использовать кнопку обновления приложения или перейти на официальный веб-сайт приложения и установить последнюю версию оттуда.
Решение 3 – Загрузите универсальный драйвер печати HP
Вы можете загрузить универсальный драйвер печати HP для Windows 7 и новее с веб-сайта HP.
Читайте также: