RFC3986 §5.4.2 (спасибо @phk) гласит:
Синтаксические анализаторы должны быть осторожны при обработке случаев, когда в ссылке относительного пути больше сегментов ".." , чем там являются иерархическими уровнями в пути базового URI. Обратите внимание, что синтаксис ".." нельзя использовать для изменения компонента полномочий URI.
"../../../ g" = "http: // a / g" "../../../../g" = "http: / / a / g "
В приведенных выше примерах используется базовый URI http: // a / b / c / d; p? q
.
http: //a/b/c/d/../../../../g
(второй пример) эквивалентно http: // a / .. / g
, который (согласно RFC) должен иметь вид http: // a / g
.
Таким образом, парсер URI wget
(и firefox
, если на то пошло) правильно удаляет ведущие ../
компоненты
{{1 }}
Основываясь на kwalletcli , предложенном в ответе @Tim, я написал небольшой скрипт на Python для поиска паролей в kwallet, доступный на github . Его единственная зависимость — модуль keyring python.
Просто скажите gpg -агенту , чтобы он использовал его вместо текущего pinentry , и он творит чудеса. Он также будет запускать в фоновом режиме настоящий процесс ввода пароля для всего, что не запрашивает парольные фразы.