22655
サーバーを運営していると「荒らし」と言われるユーザーが紛れ込んでくることがあります。  
このユーザーを `.htaccess` などを利用してIP指定によるアクセス制限をかけることはできるのですが、  
ときどき執念深い荒らしユーザーがIPを変更して継続的に荒らし行為を繰り返してきます。

サーバー側でIP以外にアクセス元の端末情報などを識別し、  
アクセスを制限する手段はないのでしょうか？
CC BY-SA 3.0
2016-02-26T05:33:41.120
22560
2016-02-29T06:35:10.163
2016-02-26T06:30:30.573
2521
5505
question
linux .htaccess
IPアドレスが不定な、悪意のあるユーザーにアクセス制限を掛ける方法
この件はいろいろと難しい問題をはらんでいます。  
そもそも論として `Web閲覧者` を識別してよいのか、あたりから議論を始めないといけません。  
悪意あるユーザーを一意に識別できるのであれば、悪意のないユーザーも同上ということで、  
それは (悪意のない) ユーザーを「個人ターゲットできる」つまりプライバシー侵害につながりかねません。

原則、識別をすべきではない、に１票を投じておきます。

それでもどうしても識別したい、ということなら  
当該悪意あるユーザが `cookie` を知らない技量なら `cookie` を配っておけばよいでしょうし  
`Web 指紋` とか `ブラウザ指紋` とか呼ばれる識別技術を使うのもあり、でしょう。  
<https://panopticlick.eff.org/>  
こっちのほうがわかりやすいかも？  
<https://amiunique.org/>

オイラ個人的にはやはり識別をすることをお勧めしません。
CC BY-SA 3.0
2016-02-26T06:55:57.593
22564
2016-02-28T23:27:30.587
2016-02-28T23:27:30.587
8589
8589
22560
answer
Webサーバが端末を識別する手段としては、

  * IPアドレス
  * ブラウザが送ってくるHTTPリクエストヘッダ(Cookie含む)
  * Javascript経由で取得できるハードウェアやソフトウェア、閲覧履歴に関する情報

などがあります。

広告業界なんかではこれらの情報で比較的精度の高いユーザー追跡を実現しているので、頑張ればアクセス制限に使えないこともありません。

ただし、広告用とアクセス制限では「利用者が故意に自分の身元を隠す」という点で正反対なので、格段に精度は落ちるでしょう。CookieとJavascript
無効にされるだけでもほとんどの情報が取得できません。

現実的な対策としては、Wikipedia
なんかを見てもわかるように、IPアドレスによる制限(個別→ブロックごと)とユーザー認証(ログインの強制)を組み合わせるぐらいしかないでしょう。

もしユーザー認証をしていないのであれば、検討しても良いかもしれません。このサイトのようにGoogle/Twitter/Facebookなどの認証に乗っかれば認証情報を自前で保存しなくてもよいですしユーザーの不便も最小限で済むでしょう。
CC BY-SA 3.0
2016-02-29T00:46:43.570
22647
2016-02-29T00:46:43.570
5793
22560
answer
荒らしがどのように `IP` アドレスを変更してくるかを考察してそっちから対策を考えます。  
まあ考えるまでも無くかつて `2ch.net` がたどった道なわけですが。  
方策はユーザ側が行う、対策はサーバ側で行う、のを想定してます。

方策1. `xDSL` モデム/家庭用ルータの電源を入り切りし `DHCP` の再リースを行う  
対策1. 当該 `ISP` の `IP` アドレス全部(ドメイン単位)をアクセス禁止にする

方策2. オープン (匿名) プロキシを使う  
対策2. 既知のオープンプロキシからのアクセスを禁止にする

方策3. 異 `ISP` を使う (PC の `xDSL` 接続とガラケーでは違う `IP` アドレスでしょう)  
対策3. ガラケーはアクセス禁止にするとか、ガラケーのみアクセス許可にするとか。

どれもこれも後手にまわる消極的な方法ですね。巻き添えを食らう善良なユーザも増えます。  
やはり、書き込みは許可制（要ログイン）ってのが効果的でしょう。  
何がなんでも絶対匿名でなければならないのならば、  
荒らしも容認するのがある意味正しい運営方針かもしれません。

以下は 荒らされない ための対策ですが  
方策4. `Javascript` `Cookie` を禁止して `指紋` の取得を拒絶し区別困難にする  
対策4. `Javascript` off では書き込めないようにするとか

方策5. 広告とか罵倒とかを行う  
対策5. いわゆる `NG` ワードが含まれたら書き込めないようにする (`http` とか特定単語とか)

荒らしが居づらくなるための対策ですが  
対策6. 全員公平に、書き込み元 `IP` アドレス/逆引きドメインを表示する  
対策7. 全員公平に、書き込み元 User Agent 文字列を表示する  
善良なユーザーも居づらくなりそうですけど・・・

具体的にどのように困っているのかわからないので一般論に留まってしまいます。
CC BY-SA 3.0
2016-02-29T06:35:10.163
22655
2016-02-29T06:35:10.163
8589
22560
answer