URLパラメーターでHTTP基本認証のユーザー/パスを渡すことはできますか?


153

私はこれは不可能だと信じていますが、私が知っている誰かがそれが機能すると主張しました。どのパラメーターを試すべきかさえ知りませんし、これがどこにも文書化されていません。

http://myserver.com/~user=username&password=mypasswordを試しましたが、機能しません。

HTTPパラメーター(GETまたはPOST)を介してユーザー/パスを渡すことは実際に不可能であることを確認できますか?



@sam-何?完全なURLはどのようになりますか?
ripper234

4
スペックのすべてのietf.org/rfc/rfc1738.txt(3.1)
スマッジ

@sam-申し訳ありませんが、何らかの理由でコメントを解析できませんでした。
ripper234

回答:


199

実際、標準のHTTP認証のクエリパラメータを介してユーザー名とパスワードを渡すことはできません。代わりに、次のような特別なURL形式を使用します。-これhttp://username:password@example.com/により、標準のHTTP "Authorization"ヘッダーで資格情報が送信されます。

あなたが話している人は誰でも、クエリパラメータを調べて資格情報を検証したカスタムモジュールまたはコードを考えていた可能性があります。これは標準のHTTP認証ではありませんが、アプリケーション固有のものです。


1
おかげで、これは私が探していたものです...それがGETパラメータであることは重要ではなく、URLに組み込むことができます。
ripper234

42
参考までに、このhttp://username:password@example.com形式はIEまたはChromeのいずれでもサポートされなくなりました。他の人がまだ追随していなくても、驚くことはありません。
TJクラウダー14年

11
実際、Chromeでは正常に機能します。IEだけがだめにされています。
ダミアンオーフレイムツ

1
@DamienOvereemクロームのバージョンは何ですか?私はMac OS X 37を使用していますが、私には動作しないようです
Chris DaMour 14

11
それ以来、Chromeでしばらく無効になっていることを知りましたが、後でこの機能を再度有効にしました。私はまた、リンクのこれらの種類に実行しているときにSafariが終わって.. .. URLベースのHTTP認証の基本的時間をフィッシング・エラーがスローされますことを学んだ
ダミアン・オーフレイムツ

18

URLで基本認証パラメーターを渡すことはお勧めしません

この目的のためのAuthorizationヘッダーフィールドがあります。httpヘッダーリストを確認してください。

使用方法はここに書かれています: 基本アクセス認証

また、一部のブラウザーではまだサポートされていますが、URLに基​​本認証資格情報を追加する推奨ソリューションは推奨されていません。

基本認証を使用しない理由の詳細については、RFC 2617-HTTP認証の4.1章も参照してください。


クエリ文字列で認証パラメーターを渡す

OAuthまたは他の認証サービスを使用する場合、認証ヘッダーではなくクエリ文字列でアクセストークンを送信することもできます。

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

そして、AuthorizationヘッダーをURLにエンコードするにはどうすればよいですか?
ワンブル

2
あなたが述べたフォームは今では非推奨ではありませんか?
ウォンブル

2
「この目的のためのAuthorizationヘッダーフィールドがあります」と答えた質問は、認証パラメーターをURLに入れる方法を尋ねていました。HTTPヘッダーフィールドをURLにエンコードできない場合(エンコードできない場合)、答えは非セキュリティです。
ウォンブル

URI標準のどこで基本認証パラメーターをURIに渡すことは非推奨であると言っているのか引用できますか?多くの場合、プレーンテキストの認証の詳細は(私が同意する)良いアイデアではないため、RFC 2396では「推奨されていません」としか書かれていませんが、RFC 7235では何も言及されていません。私が検索できる仕様のどこにも、それが非推奨であると書かれているものはありません。
ライライアン

1
@Wilt:謝罪する必要があります、あなたは確かに正しいです。仕様が「変更」されたというあなたのヒントは、私がさらに調査するように促しました(RFCが公開/番号付けされると、RFCは変更されません)。RFC 2396が実際にはRFC 3986に取って代わられたことがわかりましたが、以前は見つけることができませんでした。RFC 3986では、username:password構文の廃止が言及されています:Use of the format "user:password" in the userinfo field is deprecated.
リーライアン

17

http:// username:password@example.comは、FireFox、Chrome、Safariでは機能しますが、IEでは機能しません。

マイクロソフトサポート技術情報


2
この機能はChrome 19以降から削除されました。参照してくださいcode.google.com/p/chromium/issues/detail?id=123150
モシェ・カッツ

4
そのバグレポートを読んだことで、Chrome 20に再び追加されました。確かに、もしそうでなければ、多くの苦情が続くと予想されます。
ワンブル

Internet Explorer用に要求しました:connect.microsoft.com/IE/feedback/details/873575/…。わずかに異なるユースケースですが、同じ問題に対処します;)
SimonSimCity

@Diagoパスワードに「@」が含まれている場合、機能しません。それは誰もが私たちが一度にユーザー名とパスワードを与えることができる方法を私に伝えることができ、致命的なエラーを与える
あるAshishジャイナ

@AshishJain- @のようにパスワードをエスケープしてみます%40。(ただし、それが機能するかどうかはわかりません。サーバーまたはブラウザー/サーバーの組み合わせに依存する可能性があります。)
デビッドモールズ

0

(明らかに)GETパラメーターで任意の文字列を送信することは可能ですが、特にAJAXリクエストに含まれていない場合は、ログイン名とパスワードを目立つように送信することはお勧めできませんが、任意の文字列を送信できます。

ただし、サーバーページをコーディングしてログインとパスワードを抽出し、必要な方法で検証して使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.