X-Forwarded-Forの中身はIPアドレスではない


知っている人からすると、何言ってんの、という話ではあるんですが。

とあるオープンソース製品で、おそらく誤解している人が書いたであろうコードにかなり振り回されたので、そこも含めて教訓として書いておきたいと思います。

と言っても、タイトルで出落ちなんですけどもね。

いや本当に、仕様には目を通してほしい… https://tools.ietf.org/html/draft-petersson-forwarded-for-02

せめてWikipedia程度でも見てくれたらと… http://ja.wikipedia.org/wiki/X-Forwarded-For

正しくは「IPアドレスもしくは複数IPアドレスを連結した文字列」ですよね。

上述の製品では、X-Forwarded-ForをそのままIPアドレスとしての妥当性チェックメソッド的なものに突っ込んでおり、エラーとしてはじかれるという事態になっていた次第です。

最新記事

すべて表示

SQLite(sqlite3)で “no such table”

小ネタです。 SQLiteを使っていて "no such table" とエラーが出た場合、 DBファイル名の指定が空になっている、という凡ミスを起こしていないかを確認してみましょう。 ・・・ そういう凡ミスをしてしばし悩んだので… ファイル名の指定が空になっている場合、一時的なインメモリDBとして保存されます(※1)。 つまりDB接続を切断すると中身は消えます。 なので接続

アプリケーションサーバにポートを指定せずに起動すると?

最近、 Goで書かれたアプリケーションサーバが起動しない! ->原因: .env ファイルが欠けていた というドタバタがありました。 結局Goと関係ないですが、この時、 「あまりGoに慣れてないのでGoの問題かと…」「DockerまだよくわかってなくてDockerの問題かと…」 というような声があったのて、あえてGoで検証してみようと思ったわけです。 さて、Goでサーバサイドのシステムを作

GitLab 9.1.2 (MySQL) を 11.4.0 (PostgreSQL) にアップグレード

弊社ではかなり前からGitLab(CE)を自社環境で運用しているのですが、ふと気付くと、バージョンがだいぶ先に行ってしまっていました。 とくに最近のバージョンでは Auto DevOps なども使えるようになっていたりするので、さすがにそろそろキャッチアップしたいと考えたわけです。 現行の環境は次の通りです: GitLab 9.1.2 sameersbn/gitlab 使用 MySQL 5.6