質問するログイン新規登録

質問編集履歴

1

セキュリティの関わる問題なので削除させていただきました。

2018/06/18 09:38

投稿

amaguri
amaguri

スコア227

title CHANGED
@@ -1,1 +1,1 @@
1
- cakephpで取得したIPが範囲内かつーブルデータ内フラグが1なのか0なのかの識別
1
+ セキュリ関わる問題なので削除させていただきました
body CHANGED
@@ -1,84 +1,1 @@
1
- 以前教えていただきまして取得したIPがDBに登録されたIPの範囲内かの判断はできるのすが
2
- IPの範囲内でなおかつfull_access_flgが1なのかの判断のプログラムの書き方がわかりません。
3
-
4
- やりたいこと
5
- 取得したIPがDBに登録された複数の許可IPの範囲内か?(テーブル内のデータ全件確認必須)
6
- 許可IPの取得及びfull_access_flgが1なのか?
7
- 許可IPが範囲でfull_access_flgが0なのか?
8
- の二つの切り分けがしたいのですがどうすれば効率よく切り分けができるかわかる方教えていただきたいです。
9
-
10
-
11
- テーブル
12
- ```php
13
- CREATE TABLE allow_ips
14
- id integer auto_increment,
15
- start_ip varchar(20),許可IP開始位置
16
- last_ip varchar(20),許可IP終了位置
17
- full_access_flg boolean not null default 0,
18
- ```
19
- 現在のコントローラー
20
- ```php
21
- // メインの処理
22
- public function index() {
23
- // 接続元IP情報
24
- $access_ip = CommonComponent::getAccessIp();
25
-
26
- // SQLの用意
27
- $sql = "SELECT start, last FROM ips AS AllowIps WHERE INET_ATON(?) between INET_ATON(start) and INET_ATON(end)";
28
-
29
- // SQLの実行と結果取得
30
- $ips = $this->AllowIps->query($sql, [$this->$access_ip]);
31
-
32
- // $ipsが空なら該当なしでエラーを返す
33
- if (empty($ips)) {
34
- $this->set("result" , array("result" => "error"));
35
- return;
36
- }
37
-
38
- }
39
-
40
- function getAccessIp() {
41
- if (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
42
- return $_SERVER['REMOTE_ADDR'];
43
- }
44
-
45
- $ips = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
46
- return trim(end($ips));
47
- }
48
- ```
49
-
50
-
51
- これから書きたいコード
52
- // SQLの用意にfull_access_flgを追加して中身を確認する。
53
- ただこれだとIPが範囲内しかわからないと思うので
54
- full_access_flgが1なのかどうしたらいいかわかりません。
55
- ☆にところが重要ではいかと考えていま
1
+ セキュリティの関わる問題ので削除させていただきした
56
- ```php
57
- // メインの処理
58
- public function index() {
59
- // 接続元IP情報
60
- $access_ip = CommonComponent::getAccessIp();
61
-
62
- // SQLの用意
63
- $sql = "SELECT start, last, full_access_flg FROM ips AS AllowIps WHERE INET_ATON(?) between INET_ATON(start) and INET_ATON(end)";
64
-
65
- ☆// SQLの実行と結果取得(ここで取るべき値も不明)
66
- $ips = $this->AllowIps->query($sql, [$this->$access_ip]);
67
-
68
- ☆// $ipsがIP範囲内かつfull_access_flgが1以外の場合
69
- if (empty($ips)) {
70
- //$ipsがIP範囲内かつfull_access_flgが1以外の場合の処理
71
- }
72
-
73
- }
74
-
75
- function getAccessIp() {
76
- if (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
77
- return $_SERVER['REMOTE_ADDR'];
78
- }
79
-
80
- $ips = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
81
- return trim(end($ips));
82
- }
83
-
84
- ```