我想要:
寫一個安卓的APP,用手機查詢資料庫資料,但是老師說不行,說之前這樣被攻擊過,要我在手機和資料庫中間架設一個網站當中繼點,如下圖所示:
改成下圖
我目前的資料庫是用XAMPP裡的MySQL資料庫
自己也爬了很多文
有查到的內容是用PHP寫,但是還是不太清楚
請問我該用甚麼程式架設這個網站?或是有甚麼能參考的書籍或網站?謝謝各位大神!
應該是
Android App → 後端伺服器 → 資料庫
← ←
後端伺服器不只可以用 php 寫
也可以用 nodejs java python 等...
給你個 nodejs 範例
反正廣義來說
就是 app 發送 http request 到 後端伺服器
後端伺服器將資料處理完並回傳給 app
你在透過回傳的資料 在 app 上進行相關的動作
其實網路安全有點複雜,
不過一般來說如果能夠直接存取DB,
危險性會高一些些,
尤其是允許 %.%.%.% 的,
有一種做法就是在Server架本機資料庫,
然後本機的網頁(PHP等)去讀資料庫的資料,
透過網頁(一般稱為API)去要資料,
APP傳給API一些參數,
然後網頁透過這些參數去跟資料庫讀資料或寫資料,
然後再將結果回傳給APP(通常是用Json字串),
當然也可以加一些驗證之類的,
不過既然是初學也不用太複雜,
驗證這件事就先忘記吧.
另外通常會使用POST方法比GET方法安全一些.
(只是比較安全、沒說一定安全)
大約說一下為何你老師會這樣說。
因為如果你要直接從app連接到資料庫上,你一定得要將資料庫的帳密給寫到app裏面。
app並不是你所控管的,使用老可以分解、解析後得到你的資料庫帳密。就可以登入了。
再加上為了要讓外部也可以連結的情況下,你的資料庫一定得要開放對外連接的權限。
大大的增加其危險性。
這樣子是否可以了解你老師說的東西呢??
再來,其實一般來說我們會把他叫做api。
你的app是連接你的主機內的任何一支能應用的程式,如c、php、java.....等後端應用程式處理。
傳入的值可以是get、post或是xml及data封包...。這看你的東西條件來決定。
先不論你決定要怎麼做。但因為透過了api處理。你的資料庫帳密就可以寫在你的api內。
而這支應用並無法讓使用者直接獲得其應用,自然就不容易取得內部寫的資料庫帳密。
且因為api應用是放在跟資料庫同一台機器,也無需開放對外連結。大大的降低其危險性。
基本來說,我會建議你先學會post傳送後,接收json值。會比較單純點。
你用XAMPP的話,那就採用php來當你的後端核心。
簡單一點的程式如下
<?php
$dbms='mysql'; //資料庫模式,這邊就使用mysql吧
$host='localhost'; //資料庫主機名
$dbName='test'; //資料庫名
$user='root'; //資料庫帳號
$passWord=''; //資料庫密碼
$dsn="$dbms:host=$host;dbname=$dbName";
$post = $_POST;
try {
$dbh = new PDO($dsn, $user, $passWord);
$data = Array();
//要運行的sql的指令
$sql = "SELECT * from db where id={$post['id']}";
foreach ($dbh->query($sql) as $row) {
$data[] = $row;
}
/** 也可以改用如下的用法直接取得全部數據,如果資料量不大的話
$rs = $dbh->query($sql);
$data = $rs->fetchAll();
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
echo json_encode($data); //輸出json格式資料
?>
這樣的程式碼就可以做為你的基本應用了。