MySQL 資料庫若多人(3000人)用同一個帳號上線進行語句查詢,MySQL會出錯嗎? |
答題得分者是:cobraliu
|
adrianblack
一般會員 發表:5 回覆:5 積分:2 註冊:2007-11-03 發送簡訊給我 |
請教各位前輩,小弟是資料庫新手,有些問題想請教…
小弟想在程式裡加一個網路驗證功能,想法如下,不知可不可行,望請各位前輩指正,或是有更方便、安全、穩定的方法,不吝賜教: ■從程式裡連接到網路的 MySQL 資料庫,並送出比對帳號是否存在的查詢語句,比對成功則程式可繼續執行;反之則關閉程式。 但又想到以下問題… 1.登入 MySQL 資料庫時,是以同一個帳號密碼登入,若線上同時有3000個 USER 登入的話,那麼 USER 端的應用程式還能正常得到查詢結果嗎? 2.同上所述,亦或者 MySQL 資料庫會因此無法運作? 3.小弟的程式送出的語句是明碼,很容易被內行人看出來,若我限制該MySQL帳號的權限後,是否還會被不明人士入侵,造成安全上的疑慮? |
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
一、若用同一帳號,可以Run,也可以拿到資料,印象中沒有差,但你的主機可以接受同時3千人去查資料嗎....它引申的問題還滿多的...
二、跟上述一樣... 三、有設權限,還有有權限可以去使用那些Table不是嗎...即然有權限當然就有顧慮了... 若回答有誤請各位大大指正... ===================引 用 adrianblack 文 章=================== 請教各位前輩,小弟是資料庫新手,有些問題想請教… 小弟想在程式裡加一個網路驗證功能,想法如下,不知可不可行,望請各位前輩指正,或是有更方便、安全、穩定的方法,不吝賜教: ■從程式裡連接到網路的 MySQL 資料庫,並送出比對帳號是否存在的查詢語句,比對成功則程式可繼續執行;反之則關閉程式。 但又想到以下問題… 1.登入 MySQL 資料庫時,是以同一個帳號密碼登入,若線上同時有3000個 USER 登入的話,那麼 USER 端的應用程式還能正常得到查詢結果嗎? 2.同上所述,亦或者 MySQL 資料庫會因此無法運作? 3.小弟的程式送出的語句是明碼,很容易被內行人看出來,若我限制該MySQL帳號的權限後,是否還會被不明人士入侵,造成安全上的疑慮?
------
初學、初學、學了很久...還是在初學階段..Orz |
adrianblack
一般會員 發表:5 回覆:5 積分:2 註冊:2007-11-03 發送簡訊給我 |
1.那麼如果權限只設定給予 select 某個欄位,那該 user 能靠其他方法編修MySQL 資料庫嗎?
2.或者小弟該如何做驗證的功能,才比較沒有安全上的疑慮呢? 3.是否有其他可行的方法來代替小弟的方案呢? 請前輩不吝指教 ^^" ===================引 用 cobraliu 文 章=================== 一、若用同一帳號,可以Run,也可以拿到資料,印象中沒有差,但你的主機可以接受同時3千人去查資料嗎....它引申的問題還滿多的... 二、跟上述一樣... 三、有設權限,還有有權限可以去使用那些Table不是嗎...即然有權限當然就有顧慮了... 若回答有誤請各位大大指正...
編輯記錄
adrianblack 重新編輯於 2008-10-13 14:42:15, 註解 無‧
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
1.理論上沒有.
2.不要經過網路. 不過.不太可能. 除非用的是 WEB 3. 同時 connect 3000 個 connect? 它的問題在你的 os 吧. 因為每個 connect 進來.都是一個 file handle 這個要測喔.我測過其他的東西是能跑到2000. ===================引 用 adrianblack 文 章=================== 1.那麼如果權限只設定給予 select 某個欄位,那該 user 能靠其他方法編修MySQL 資料庫嗎? 2.或者小弟該如何做驗證的功能,才比較沒有安全上的疑慮呢? 3.是否有其他可行的方法來代替小弟的方案呢? 請前輩不吝指教 ^^" ===================引 用 cobraliu 文 章=================== 一、若用同一帳號,可以Run,也可以拿到資料,印象中沒有差,但你的主機可以接受同時3千人去查資料嗎....它引申的問題還滿多的... 二、跟上述一樣... 三、有設權限,還有有權限可以去使用那些Table不是嗎...即然有權限當然就有顧慮了... 若回答有誤請各位大大指正... |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
暗黑大大有回覆問題以下是閒話家常
其實講到最後是$$$$$$的問題很主要...@@ 在自已的客戶中有用「深藍」的主機(算算大概是8年前左右買的)加Oracle的Database,同時約3-5百人在使用,主機一樣是Down Down下來.... 理論上,User再多是可以吃下來,但主機受不了....這又卡到$$$... careychen大大談到用Multi - Tier ....$$$跑不了.... So.資金是很大的問題... 上述是閒話...各位大大看看就好,別太認真...@@
------
初學、初學、學了很久...還是在初學階段..Orz |
adrianblack
一般會員 發表:5 回覆:5 積分:2 註冊:2007-11-03 發送簡訊給我 |
在此先感謝各位大大們的回應~
小弟欲在程式裡加入的驗證功能,在連上server回傳驗證碼至Cilent端的應用程式後,馬上會與該server斷線,可能不會造成server負載過重,但仍會擔心那~~麼的剛好所有user一同上網驗證(ps:希望別發生才好),會造成server負載過重,不曉得這麼推斷是否正確 @@!? 如cobraliu大大所云,小弟的資金可能無法因應高價位的server @@,目前屬意選擇網路上的付費 MySQL 用用(一年500元;x度數位科技網:不曉得穩不穩定,或者大大們有更好的建議 @@)。 另外,小弟在網路上也找到完全符合小弟想法的範例程式(ps:應用程式連上網路驗證,並回傳註冊碼的功能),在此貼上該連結網址,供有需要的大大們參考 ^^" (感謝偉大的Google 以及Delphi.ktop 大大們~) http://download.csdn.net/source/141964 (ps:上述連結引述自 http://www.csdn.net/, 需註冊才能下載該網站的程式,註冊不需要$$!)
編輯記錄
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
小心 sql rejection !!
就是當你的程式 寫的時候是用輸入欄的 [帳號]&[密碼] 來組成select 語法的時候~ 如果是直接組: select user from user_table where id="edit1.text" and pass="edit2.text" 這樣是會出現大問題的 因為只要我在edit1.text裡面輸入 0 or 1=1 -- 或者edit2.text裡面輸入 0 or 1=1 -- 這樣組成的SQL變成 select user from user_table where id=0 or 1=1 -- and pass="edit2.text" 這樣就會被破功了
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
adrianblack
一般會員 發表:5 回覆:5 積分:2 註冊:2007-11-03 發送簡訊給我 |
感謝大大的提醒 ^^~
小弟在 php 裡有加入這一小段驗證… 因為用戶的帳號格式裡只能有 0~9 a~z A~Z ,這樣應該可以擋掉 sql rejection 攻擊吧 @@。 另外,小弟也在 .htaccess 檔裡加入 Options -Indexes ,以防止 user 跑到小弟的網站讀取目錄裡的檔案 ^^" [code php] // 若非 0~9 a~z A~Z,就傳回 false function checktype($checknametype){ if (eregi("[^0-9a-zA-Z] ",$checknametype)){ return false; } else { return true; } } [/code] ===================引 用 ko 文 章=================== 小心 sql rejection !! 就是當你的程式 寫的時候是用輸入欄的 [帳號]&[密碼] 來組成select 語法的時候~ 如果是直接組: select user from user_table where id="edit1.text" and pass="edit2.text" 這樣是會出現大問題的 因為只要我在edit1.text裡面輸入 0 or 1=1 -- 或者edit2.text裡面輸入 0 or 1=1 -- 這樣組成的SQL變成 select user from user_table where id=0 or 1=1 -- and pass="edit2.text" 這樣就會被破功了 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |