質問編集履歴

4

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

2018/06/18 09:32

投稿

amaguri
amaguri

スコア227

test CHANGED
@@ -1 +1 @@
1
- cakephpにてHiveクエを実行した場合にデータベースーブルデータを見がら処理のだしわけについて
1
+ セキュリテ関わる問題なので削除させていたきまた。
test CHANGED
@@ -1,189 +1 @@
1
- cakephpにてHiveクエリを実行した時の処理を下記のようにしたいですがコードをどのように書けばいいかわからず困っています。
2
-
3
-
4
-
5
- ---前提条件----![イメージ説明](d528b470426c857c026c05739dbabaa4.png)
6
-
7
- ・テーブル名
8
-
9
- dbs(個人情報が入っているDBを登録するテーブル)
10
-
11
- id integer auto_increment,
12
-
13
- database varchar(100),(DBを登録するカラム)
14
-
15
-
16
-
17
- ips(許可IPアドレスを登録するテーブル)
18
-
19
- id integer auto_increment,
20
-
21
- start_ip varchar(20),(許可IPの範囲に開始を登録するカラム)
22
-
23
- last_ip varchar(20),(許可IPの範囲に終了を登録するカラム)
24
-
25
- full_access_flg boolean not null default 0,(この数値が1のIPはフルアクセスIPとして扱う)
26
-
27
-
28
-
29
-
30
-
31
- ・IP種類
32
-
33
- アクセス許可IP(ipsに登録されているIP)
34
-
35
- フルアクセスIP(ipsに登録されているIPかつfull_access_flgのステータスが1のIP)
36
-
37
- 非登録IP(ipsに登録されていないIP)
38
-
39
-
40
-
41
-
42
-
43
- Hiveクエリ
44
-
45
- ・参照系 selectやshowなど見るだけのHiveクエリ文
46
-
47
- ・更新系 CREATEやUpdateなどテーブルに変更を加えるHiveクエリ文
48
-
49
-
50
-
51
-
52
-
53
- コントローラーに書こうとしているプログラム
54
-
55
- ```php
56
-
57
- function index(){
58
-
59
-
60
-
61
- //実行クエリのスキーマチェック
62
-
63
- 実行するクエリの対象DBがdbsテーブルのdatabaseにあるデータかを確認
64
-
65
-
66
-
67
- if(dbsのdatabaseにあるデータの場合){
68
-
69
- 接続元IPアドレスがipsに登録されているIPアドレスの範囲内かを確認
70
-
71
- if(IPアドレスが範囲ではない場合){
72
-
73
- エラーを返す;
74
-
75
- }
76
-
77
- }else if(dbsのdatabaseにないデータの場合){
78
-
79
- クエリが参照系か更新系かの確認
80
-
81
- if(クエリが更新系の場合){
82
-
83
- ipsに登録されているフルアクセスIPか非登録IPかを確認
84
-
85
- if(ipsに登録されているフルアクセスIPか非登録IPのどちらでもなかった場合(アクセス許可IPの場合)){
86
-
87
- エラーを返す;
88
-
89
- }
90
-
91
- }
92
-
93
- }
94
-
95
- }
96
-
97
- ```
98
-
99
-
100
-
101
- 接続元IPアドレスがipsに登録されているIPアドレスの範囲内かを確認のコードは下記で行おうと思います
102
-
103
-
104
-
105
-
106
-
107
- ```php
108
-
109
- //IPアドレス取得
110
-
111
- function getAccessIp() {
112
-
113
- if (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
114
-
115
- return $_SERVER['REMOTE_ADDR'];
116
-
117
- }
118
-
119
-
120
-
121
- $ips = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
122
-
123
- return trim(end($ips));
124
-
125
- }
126
-
127
-
128
-
129
-
130
-
131
- // allow_ipsテーブルから全データ取得
132
-
133
- $ips = $this->Ips->find('all');
134
-
135
-
136
-
137
- // IPがipsテーブルのIPの範囲内にあるかのチェック
138
-
139
- $check = 0;
140
-
141
- // ipsテーブルのデータから1つずつ取り出してIPが範囲内かチェック
142
-
143
- foreach ($ips as $ip) {
144
-
145
- if( (ip2long($ip['Ips']['start']) <= ip2long($this->$access_ip))
146
-
147
- && ( ip2long($this->$access_ip) <= ip2long($ip['Ips']['last']) ) ){
148
-
149
- $check = 1;
150
-
151
- }
152
-
153
- }
154
-
155
-
156
-
157
- // IPが範囲外の場合
158
-
159
- if (!$check) {
160
-
161
- $this->set("result" , array("result" => "error"));
162
-
163
- return;
164
-
165
- }
166
-
167
-
168
-
169
- }
170
-
171
-
172
-
173
- ```
174
-
175
-
176
-
177
- わからないこと
178
-
179
- コードの書き方がそもそもわからないのですが
180
-
181
- hiveクエリの参照系との更新系の識別方法
182
-
183
- 実行クエリが更新系の場合、フルアクセスIPか非登録IPかの識別のやり方
184
-
185
- が特にわかりません。
186
-
187
-
188
-
189
- らっしゃいましたら教えてください宜しくお願い致します
1
+ セキュリティの関わる問題なので削除させてただきました。

3

誤字修正

2018/06/18 09:32

投稿

amaguri
amaguri

スコア227

test CHANGED
File without changes
test CHANGED
@@ -130,7 +130,7 @@
130
130
 
131
131
  // allow_ipsテーブルから全データ取得
132
132
 
133
- $ips = $this->AllowIps->find('all');
133
+ $ips = $this->Ips->find('all');
134
134
 
135
135
 
136
136
 
@@ -142,7 +142,7 @@
142
142
 
143
143
  foreach ($ips as $ip) {
144
144
 
145
- if( (ip2long($ip['ps']['start']) <= ip2long($this->$access_ip))
145
+ if( (ip2long($ip['Ips']['start']) <= ip2long($this->$access_ip))
146
146
 
147
147
  && ( ip2long($this->$access_ip) <= ip2long($ip['Ips']['last']) ) ){
148
148
 

2

画像の変更

2016/07/13 08:32

投稿

amaguri
amaguri

スコア227

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ---前提条件----![イメージ説明](9b29e5b2d042eadc2ce8d8fd91143adf.png)
5
+ ---前提条件----![イメージ説明](d528b470426c857c026c05739dbabaa4.png)
6
6
 
7
7
  ・テーブル名
8
8
 

1

インデント修正

2016/07/13 08:30

投稿

amaguri
amaguri

スコア227

test CHANGED
File without changes
test CHANGED
@@ -70,25 +70,27 @@
70
70
 
71
71
  if(IPアドレスが範囲ではない場合){
72
72
 
73
- エラーを返す;
73
+ エラーを返す;
74
74
 
75
- }
75
+ }
76
76
 
77
77
  }else if(dbsのdatabaseにないデータの場合){
78
78
 
79
79
  クエリが参照系か更新系かの確認
80
80
 
81
- if(クエリが更新系の場合){
81
+ if(クエリが更新系の場合){
82
82
 
83
- ipsに登録されているフルアクセスIPか非登録IPかを確認
83
+ ipsに登録されているフルアクセスIPか非登録IPかを確認
84
84
 
85
- if(ipsに登録されているフルアクセスIPか非登録IPのどちらでもなかった場合(アクセス許可IPの場合)){
85
+ if(ipsに登録されているフルアクセスIPか非登録IPのどちらでもなかった場合(アクセス許可IPの場合)){
86
86
 
87
- エラーを返す;
87
+ エラーを返す;
88
88
 
89
- }
89
+ }
90
90
 
91
- }
91
+ }
92
+
93
+ }
92
94
 
93
95
  }
94
96