Revel埋立:CSRF 対策でちょっとハマる
ちょっと話は前後するのですが、えぶアプリのブレークスルーが概ね進んできたので、
ここいらで CSRF 対策~ と思ったわけです。

Revel は素晴らしいことに、CSRF 対策用のパッケージとかよゆーで存在するわけです。
revel-csrf

リンク先のギハブに使い方が書いてありますが、
日本語訳も簡単にみつかるのでここでは割愛します。

問題はこっから先。

ひでのふの使っている go言語のバージョンはこんな感じなんですが

# go version
go version go1.7.4 linux/amd64


この環境で revel-csrf のインスコ用コマンドを叩くと...

# go get github.com/cbonello/revel-csrf
# github.com/cbonello/revel-csrf
/var/golang/src/github.com/cbonello/revel-csrf/csrf.go:50:
c.RenderArgs undefined
(type *revel.Controller has no field or method RenderArgs)


こんな感じで怒られちゃうわけです。
実際、使い方に従い revel-csrf を導入しても、同じように怒られますw
ちなみにエラーが出ても、$GOPATH/src/github.com/cbonello 配下には
ちゃんとパッケージがインスコされているよーです。

結局どうやって対処したかとゆーと、直接エディタで csrf.go を書き換えましたw

csrf.go : Line 50
旧:    c.RenderArgs[fieldName] = realToken

新: c.ViewArgs[fieldName] = realToken


実際 http のヘッダを見ると、POST のリクエストに csrf_token が
含まれるようになったので大成功なんじゃないかとw

簡単に機能をテストするなら、revel-csrf のマニュアルに書いてある
下記のタグが存在しないページから
別の Revel 配下のページに POST で遷移してやればエラーが出ます。

<input type="hidden" name="csrf_token" value="{{ .csrf_token }}" />

【2017/05/05】 golang / Revel | トラックバック(0) | コメント(0) | page top↑
<<Revel埋立:dev モードと prod モードの違い | ホーム | Revel埋立:Revel のページと静的 HTML を共存させる。>>
コメント
コメントの投稿











管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://hidenov.blog4.fc2.com/tb.php/1362-75016d58
| ホーム |