Go言語によるWebアプリケーション開発 チャットアプリのその後
本記事について
Go言語によるWebアプリケーション開発のチャットアプリでちょっと遊んでみます
チャットアプリを外部公開する方法と、なりすましについての説明があります。
後者は手元のサーバ以外に実施すると、法に触れる可能性があります。悪用厳禁です
外部公開
ngrok
を使用し、指定したポートを外部に公開することができます。
(画像にある通り、セッションは8時間で途切れてしまうみたいなので。実用的ではないですね)
$ ngrok http 8080
実行すると、URLなどの情報がでてきます。後でhttpの方を使用します。
本の手順でgoogle developer consoleを設定したら、
認証情報のOAuth 2.0 クライアント IDというところを以下の画像のように設定します。
ここで、2つのURIはngrokで表示されていたものを使用しています。再現する場合は適宜置き換えてください
OAuth 2.0 クライアント IDの画面の右上の方にクライアント ID、クライアント シークレットの情報があるので
その情報とngrokのURLを使用し、main.go
の53行目、google.New()
の中身を書き換えます。
google.New("[クライアントID]", "[クライアントシークレット]", "http://94150776.ngrok.io/auth/callbackgoogle"),
これで準備完了です。ビルドし、実行します。
$ go build
$ ./chat
2020/04/05 16:10:17 Webサーバーを開始します。ポート :8080
http://94150776.ngrok.io/login
をブラウザで開くと、ログイン画面が表示されます。
googleアカウントを使用してログインすると、チャットができるようになっています。
複数タブでアカウントを変えたり、友達を招待したりして遊べます。
遊ぶ
このチャットアプリ、名前や画像が自己申告制なので簡単になりすましができてしまいます。
※ 手元のサーバでも、他のユーザがいる状態で実行すると混乱を招く可能性があります。悪用厳禁です
やってみましょう。
デベロッパーツールのコンソールでcookieを確認します。
> console.log(document.cookie)
auth=[cookieの値]
cookieの値はbase64された文字列なので、複合します。
{"avatar_url":"[画像のURL]","name":"[名前]","userid":"[ユーザID]"}
アバターのURLや名前などのデータが入っています。値を書き換えてみます。
{"avatar_url":"https://help.qiita.com/images/qiitan-button.png","name":"きーたん","userid":""}
base64エンコードして、コンソールでcookieを書き換えます。
> document.cookie="auth=eyJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9oZWxwLnFpaXRhLmNvbS9pbWFnZXMvcWlpdGFuLWJ1dHRvbi5wbmciLCJuYW1lIjoi44GN44O844Gf44KTIiwidXNlcmlkIjoiIn0="
任意のユーザになりますことができた。
最後に
大事な事なので3回書きます。悪用厳禁です。
最後まで読んでくださり、ありがとうございました。
Author And Source
この問題について(Go言語によるWebアプリケーション開発 チャットアプリのその後), 我々は、より多くの情報をここで見つけました https://qiita.com/y0d3n/items/445bdeb655988a663947著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .