Как восстановить поврежденный объект в репозитории git (для новичков)?

Я попытался открыть свой репозиторий сегодня, но не обнаружил истории коммитов. Все, что я пробовал (git status, git log, git checkout ...), вызывало ошибку о поврежденном объекте.

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

$ git fsck --full

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

Итак, мой вопрос (вопросы): должен ли я резервное копирование ( ох, предупреждение для новичков ), или это случилось, когда я распаковал файл .pack? И является ли «виновником» того, что я копирую обратно чистый файл, то есть не поврежденный?

(Я думаю, будет справедливо сказать вам, что меня сначала смутило простое тире в файле Торвальдса между " Я искал лучшее решение, и два, которые приходят на ум, - это локальный файловый прокси (локальный файл с использованием php :: fopen) или jquery / JSONP.

Когда я смотрю в Интернете, я вижу, что люди обычно говорят о том, как это Опасно использовать JSONP, потому что кто-то может ввести с ним вредоносные данные. Дилемма состоит в том, что большинство аргументов против этого, кажется, не выдерживают критики, поэтому я прихожу сюда, чтобы попросить у Стека разъяснений.

Каковы конкретные векторы атаки, которые могут быть открыты междоменным JSONP?

Насколько я понимаю, единственный вектор для JSONP - это точно такой же вектор, который открывается включением на вашем сайте, src которого относится к любому сайту, который не контролируется вами: он может стать вредоносным и начать фарм пользовательских сеансов / файлов cookie / данных. Если это правда, тогда может показаться, что проблема не в протоколе (JSONP), а в источнике , из которого собираются данные.

Потому что, будь то серверный прокси, тег или ajax / JSONP, есть риск, что я размещу чужой контент на своей странице, и они могут начать фармить пользователя сеансы, если они чувствовали себя обязанными (это именно то, что делает Google Analytics посредством тега сценария).

Многие векторы, которые я слышу в Интернете, зависят от неправильной проверки отправленных пользователем форм и данных. Например, JSONP используется для извлечения некоторого файла, который помещает данные в форму, а затем форма отправляется для вставки в базу данных. Если данные из этой формы являются надежными, потому что они получены из надежного источника (данные JSONP) и введены без проверки, то снова это ' Не виноват JSONP, а неправильно проверенный ввод пользователя. Пользователь может внести те же самые изменения в эту форму с помощью Firebug, но, как я проверял, никто не называет Firebug вектором безопасности.

Последний элемент - это представление о том, что с прокси на стороне сервера существует большая возможность фильтрации результаты до передачи клиенту. Тем не менее, будь то PHP или Javascript, я мог фильтровать результаты, чтобы удалить такие вещи, как onclick или iframe. Конечно, кто-то на стороне клиента может изменить мою функцию javascript, чтобы удалить фильтрацию, но фильтрация повлияет только на их конкретный клиентский опыт и не будет изменена для других пользователей, что предотвратит постоянную многоклиентскую XSS-атаку.

Очевидно, прокси-сервер на стороне сервера имеет некоторые преимущества, поскольку он упростит регистрацию потенциальных XSS-атак, но с точки зрения предотвращения самой атаки и PHP, и Javascript, похоже, имеют адекватные утилиты. В некотором смысле может показаться, что JSONP на самом деле более безопасен, чем простой тег , потому что, по крайней мере, с JSONP результат проходит через функцию, что означает его некоторую фильтрацию, а не просто полное доверие, как это происходит. с .

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

РЕШЕНИЕ

  1. Если оба конца доверены, в JSONP нет опасности (это просто тег ).

  2. Оба скрипта / JSONP содержат одни и те же уязвимости безопасности, потому что они автоматически выполняются, а не просто передаются в виде данных. Использование прокси на стороне сервера означает, что междоменный возврат передается в виде данных и может быть отфильтрован на предмет вредоносного содержимого. Если кросс-домен полностью доверяет, JSONP / SCRIPT безопасен, если есть какие-либо подозрения на риск, пропустите его через прокси-сервер фильтра.

8
задан Sam 17 August 2014 в 20:36
поделиться

1 ответ

Существует БОЛЬШАЯ разница между прокси-сервером на стороне сервера и