Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

アクセス元の制限 #291

Closed
uzulla opened this issue Mar 21, 2021 · 8 comments
Closed

アクセス元の制限 #291

uzulla opened this issue Mar 21, 2021 · 8 comments
Assignees

Comments

@uzulla
Copy link
Collaborator

uzulla commented Mar 21, 2021

#266 (comment) より引き継ぎ

IPまたはGeoIPによる国単位のブロックを実装する

@uzulla
Copy link
Collaborator Author

uzulla commented Mar 21, 2021

@fc2dev

確認なのですが(GeoIPによるブロックがあるので)、このアクセス制限はサイトグローバルなものでしょうか?それとも元々のISSUE通り、管理画面のみのものでしょうか?

@fc2dev
Copy link
Contributor

fc2dev commented Mar 27, 2021

管理画面のみと認識していただいて問題ありません。
ですが、弊社のブログユーザーの意見として、
スパムコメントやアタック防止のためにブログのアクセスをについて地域制限をかけたいという要望があるようです。

本体のブログでは、ホスト名によるアクセスブロックもあるため、
差分を埋めると言う点ではこれらの実装もお願いさせていただきたいです。

@uzulla
Copy link
Collaborator Author

uzulla commented Mar 27, 2021

なるほど了解です、それぞれ別の設定として実装したいと思います。

@uzulla
Copy link
Collaborator Author

uzulla commented May 22, 2021

@fc2dev

確認と、質問です。

まず、「管理画面のIPアドレスの許可」については、IPアドレスリストを設定する方式を考えています。
なお、そのIPアドレスリストは速度的にConfigに書き込もうと思っています。ただInterfaceを実装する形にして、メールと同様に必要な実装を追加してConfig設定すれば、別のデータソースにさしかえることもできるように拡張性はもたせる予定です。
よろしいでしょうか?

次に質問です。「全体のGeoIPブロック」についてはどのようなフォーマットで指定したい(あるいは具体的にどこのデータソース、APIやSaaSをつかいたい)などありますでしょうか?

たとえば、 https://www.maxmind.com/en/geoip2-services-and-databases などの外部をつかえるようにしたいのか、ネットワークアドレスのリストをつくるのか…等ありましたらば指摘ください。(有料サービスだとちょっと開発がなやましいです)

特に指定がなければ、上と同様にInterfaceとConfigでのネットワークアドレス指定実装のサンプルを実装して、実際のサービスを使う際には別途、と考えております。

@fc2dev
Copy link
Contributor

fc2dev commented May 23, 2021

@uzulla

いただいたご質問に関しまして。

  1. IPアドレスの許可については、データの一貫性のある保管と速度面のことを考えると、
    マスターとなるデータ自体はDBに保管をいただき、
    そのキャッシュデータをConfigとは別な形でPHPのソースファイルの形式でどこかに書き出す。
    が比較的合理的な対応と考えています。

  2. 個人ユーザーの利用が多いことが想定されるので、
    無料で利用できるデータベースに対応したいと考えています。

https://dev.maxmind.com/geoip/geoip2/geolite2/
https://lite.ip2location.com/

具体的に上記2つのデータベースです。
いずれも
 ・データベースのデータが特定のディレクトリにある
 ・必要なモジュールがインストールされている
   または
 ・環境変数にて国コードが渡される(ウェブサーバーでgeo判定を行い、その結果を利用する)
の状態を前提として動作させる形で問題ありません。

@uzulla
Copy link
Collaborator Author

uzulla commented Aug 7, 2021

@fc2dev

比較し、扱いやすいMaxMindのGeoIp2で実装をすすめているのですが、設計として「特定の国を『拒否』する」という機能でよいでしょうか?たとえば設定で、以下のように国コード指定をかんがえています。

define("ACCESS_BLOCK_ADMIN_COUNTRY_CSV","JP,US");
define("ACCESS_BLOCK_USER_COUNTRY_CSV","JP");

もし私の想定と逆で、『許可』であるならば指摘ください。

「特定の国を許可する」ほうがぱっとわかりやすいなとおもいますが、ヒットしないとアクセスができないので、逆に困りそうだなと思っています。

また、「マスターとなるデータはデータベースに」とのことでしたが、MaxMindは公式でPure PHPのライブラリがあり、それで処理すれば十分に高速な検索が可能な(単一ファイルにおさまった)バイナリ形式DBを用意しているため、それをそのまま用いるほうが利便性が高いと考えています。

https://github.com/maxmind/MaxMind-DB-Reader-php

(必要なら、mmdbファイルをアップロードする画面をつくるくらいはしても良いかもとは思います)

こちらもいかがでしょうか。

@fc2dev
Copy link
Contributor

fc2dev commented Aug 7, 2021

@uzulla

  1. 国ごとの「拒否」で問題ありません。
  2. mmdbファイルのアップロードを受け、機能を有効にする方向性にしていただきたいです。

uzulla added a commit to uzulla/fc2blog that referenced this issue Aug 9, 2021
uzulla added a commit to uzulla/fc2blog that referenced this issue Aug 9, 2021
- need MaxMind GeoIp2 database.
- https://www.maxmind.com/en/geoip2-databases
- https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en
- Download mmdb file to `/app/temp/GeoLite2-Country.mmdb`
fc2dev added a commit that referenced this issue Aug 12, 2021
国コード指定でアクセスブロック機能 #291
@uzulla
Copy link
Collaborator Author

uzulla commented Aug 12, 2021

マージいただいたので、クローズいたします。
UIに関しては別のISSUEで管理いたします #361

@uzulla uzulla closed this as completed Aug 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants