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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2133閲覧

スマフォからsqlクエリ発行による検索とWebAPIによる検索との違い

super1234

総合スコア52

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/11/05 19:30

編集2017/11/05 19:35

私のjavaサイト(Linux)のデータベースpostgres(Linux)へスマフォから検索できる目的のandroidアプリを作ろうと考えています。

WebAPIを使ってやりとりするやり方とアプリからsqlクエリを仕込んで検索するやり方と違いやメリットデメリットを教えて下さい。

観点としまして
・具体的実装方法
・セキュリティ
・手間
・利便性
・その他メリットデメリット

例えばサイトが小売系でWebAPI公開で拡販を行えるなどのメリットはあるかと思いますが、ただ純粋に検索や予約のみの場合はクエリ発行のみで充分ということでしょうか。WebAPIは他システムとhttpなどで繋ぐというのはわかったのですが、クエリ発行と比べてセキュリティ的に違いはどう違うのでしょうが。アドバイスお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

AndroidアプリからSQLクエリとなる文字列をそのまま受け取る作りとした場合、アプリの通信内容を解析された場合に、攻撃者から任意のSQLを実行されてしまう危険性があります。

特定の項目に対する検索や特定の条件に一致するものの検索といった形で検索の対応内容が明確なのであれば、API化することで想定外のSQLが実行されることは防ぎやすくなります。
この場合も、SQLインジェクションのような攻撃に対する対策は取る必要がありますので、プリペアドステートメントを使用するなど、渡された値をそのまま使用しないような対応を行うとよいかと思います。

データベースを直接操作する必要があり、利用者が特定できる情報を持つことができるのであれば、すぐに思い当たったのがiosアプリであり、またMySQLに対するもので恐縮ですが、下記のQueryDBのようなアプリ実装もできるかと思いますのでご紹介します。

MySQL QueryDB Client on the App Store
https://itunes.apple.com/jp/app/mysql-querydb-client/id576948046

投稿2017/11/05 22:11

編集2017/11/05 22:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

super1234

2017/11/05 23:26

回答頂きありがとうこざいます。 サイトじたいが契約者のみに与えられ契約ごとのコードが付与されたURLの場合なのですが、 例) 私 → 企業 → 利用者 http~23624317/com ・企業へ提供するURLが個別 ・その利用者もログインアカウントで特定 不特定多数ではない(やや限定された)場合で、かつ利用者もログイン情報から特定できる場合でも 同じようにWebAPIの対処が必要という認識で間違えないでしょうか。
退会済みユーザー

退会済みユーザー

2017/11/05 23:33

SQL発行までの段階でフィルタリングができるということであれば、SQLを直接実行することについてのリスクは減るかとは思います。 ただし、その場合でも正規の利用者による同様の攻撃リスクは残ります。 性悪説で考えるかどうかや、対応コストとの兼ね合いにもなるかと思いますので、実際の対応においてはケースによるといえそうです。
super1234

2017/11/05 23:48 編集

ありがとうございます。見識ある意見本当に感謝します。 最後にひとつだけお願い致します。 パッケージとして利用頂いている企業のDBのみにselectクエリを発行するアプリを考えた場合、それもWebAPIとしてクエリ送信することができるのでしょうか。 そもそもWebサイトではないのでWebAPIの考え方じたいが適用できないということなのでしょうか。 失礼しました。そのDBはIISサーバーで確かに公開してるのでまた別途方法があるということでしょうか。
退会済みユーザー

退会済みユーザー

2017/11/06 00:00

インターネットを経由せず、Wi-FiやVPN等を通してイントラネットで完結する通信でDBサーバに直接接続する、ということであれば無理にWebサーバを通す必要はないかもしれません。 その場合も、どのようにSQLクエリの正当性を確認するか、といった問題は考える必要があるかもしれません。 Web API利用については、オブジェクト指向におけるカプセル化のような考え方で、getterのような形でWeb APIを利用すると考えることもできるかと思います。 Webサーバが利用できてバックエンドのアプリケーションとして実装できるのであれば、そのような対応(Web API化)もできるかと思います。 Web APIとしておくとAndroidアプリだけでなく、iosアプリやWebアプリとしての実装も容易になるかもしれません。
super1234

2017/11/06 03:42

多角的見識あるアドバイスご意見ありがとうございました。早いお返事にも大変感謝致します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問