質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

668閲覧

掲示板でユーザーを識別する方法

kobo_jp

総合スコア19

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/05/27 21:17

Node.js+JavaScriptで掲示板を作成しようと思っています。ユーザーを識別する方法にはどういったものがあるのでしょうか?

とりあえず5chやおーぷん2ちゃんねるのようなログインしなくても使える掲示板を想定しています。これらでは各ユーザーにIDが付与されますが、サーバーにアクセス禁止処分を受けると一定期間アクセスできなくなります。ブラウザを再起動しても、クッキーをクリアにしても、ルーターの電源を入れ直してもアクセス禁止のままということはセッションIDなどとは別のIDみたいなものをどこかに埋め込まんでいる?express-sessionで作成したセッションIDもブラウザを閉じると初期化されてしまいます。Redisに保存したセッションIDも同様に初期化されます。

漠然とした質問の仕方で申し訳ありませんが、行き詰まってる状況なので、何かヒントでもいただければ幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

IPやホストで認識していると思います。

投稿2022/05/27 21:21

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobo_jp

2022/05/27 21:45

ご回答ありがとうございます。 今ルーターをリセットしてみました。Nuro光なので固定IPではないんですが、グローバルIPに変化はありませんでした。IPやホストで判断しているんですかね。
guest

0

色々と手法はありますが、絶対に抑えるべき大前提は「IPアドレス」と「書き込み時刻」です。
ぶっちゃけこれだけで十分です。

何故これで十分なのか?
それは我々がインターネットを利用する条件にあります。
我々はIPSプロバイダ(通称プロバイダ)からIPアドレスを借りる必要があり、IPアドレスがなければインターネットを利用することが出来ません。

「放火する」「包丁で刺しにいく」等の極めて悪質な犯罪予告・脅迫の書き込みに関しては
警察への通報越しにプロバイダに発信者情報開示請求がいき、個人まで追跡される仕組みになっています。

プロバイダには発信者情報開示請求に対応出来るよう準備する責任があり、
誰が何時何分何秒に、どのIPアドレスを使って通信をしたかのログを逐一保存しています。

なので「IPアドレス」と「書き込み時刻」があればちょっとした成りすましは防げますし、
最悪の犯罪・脅迫にも対応できます。
必ずセットで保存しましょう。


さて、ここから話題に出てきた5chで使われている技術の話です。
5chではよくなりすましによる自演が発生する為、荒れるような話題が出ると追加機能として
IDやワッチョイで簡単ななりすまし防止策を使う事があります。

IDはIPアドレスがメインとなります。
IPアドレスがわかるなら、どのプロバイダが貸し出したか、だいたいどの地域なのかまでは絞り込めます。
そういうヒントを元に日付によるハッシュ値を与えて日替わりで変更されるIDを生成しています。

ワッチョイはIPからドコモ・AUやろ?みたいな情報を載せたり、
ユーザーエージェント(以下UA)をハッシュ値にします。
こっちは週変わりだったかな?

UAは自己申告なのでいくらでも改ざんしようと思えば出来ますが、
改ざんするのもわりと手間なのでなりすまし防止としてはそこそこ使えます。


その他にも、Cookieを使う(これも捨てるのは簡単だが保存して出し分けるには面倒)とか、
CSSやJavaScriptを読み込ませてニッチなコードを実行させてブラウザの差分をチェックしたり
imgiframe等のタグを使ってブラウザの差分をチェックする
フィンガープリントと呼ばれる手法はあります。
No-JS fingerprintingのようなサービスもあります。

まぁ、そんなとこ頑張るより、もっと他の所で頑張れよとは思います。
IPアドレスだけで良いから、まずまともに掲示板サイトとして使えないとお話にならないですね。
次にXSS脆弱性やSQLインジェクション脆弱性等への防御。

その次は5chの専ブラで読み書きできるよう作り込んだり、荒らし対策が優先順位的に上に来ることになります。
身内で使うだけならJSをふんだんに使って、読み書きしやすいリッチなサイトを作り込んでいく事を優先度すべきかもしれませんね。

投稿2022/05/30 03:05

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobo_jp

2022/05/30 18:30 編集

ご回答ありがとうございます。 詳細な説明誠に恐縮です。大変勉強になりました。IPアドレスと書き込み時刻の記録ですね。胸に刻みました。 5chのIDやワッチョイのリンクもありがとうございます。読みました。なんとなくわかっただけですが、これから学習して同様のことができるようにしたいと思います。おーぷん2ちゃんねるの"アク禁"機能みたいなものもつけようと思っています。これまで荒らしやスクリプト連投荒らしをいっぱい見てきましたので。 フィンガープリントについてもなんとかなくわかりました。 https://www.webcyou.com/?p=9260 クッキーの代用品って感じですかね。こういうのがあるなんて知りませんでした。 セキュリティについても同時並行で勉強しており、XSS脆弱性やSQLインジェクションについては名前だけは知っていたのですが、ここらもしっかり抑えていきますね。 貴殿の投稿はこれから何回か見返しながら作っていくことになると思います。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問