作者ngulin0911 (今夕是何年)
站內YCSH_alumni
標題[值日生] SQL Injection
時間Sat Oct 11 23:51:26 2008
早上起床還在猶豫值日生的主題
感謝阿西毛給我的靈感
來寫點技術性的東西好了
以下內容與電腦資料庫相關
非宅男請按←或直接按end吧
-------------------------------
SQL Injection主要發生在
將使用者輸入的資料經過字串處理後組成SQL statement
直接輸入資料庫執行
如果對於使用者輸入的資料沒有經過處理和檢查
很容易被惡意破壞
由於資料庫執行SQL statement的時候
可以接受同時一個以上的SQL statement
所以容易被人塞進另外一段SQL statement在輸入的資料裡
例如網頁登入輸入帳號跟密碼
使用會打上 ngulin0911 1234
後端的SQL可能是 select * from users where user_id='+帳號+' and pwd='密碼';
然後網頁上的帳號密碼就會被放到上面的statement裡
去資料庫取得符合的使用者
這是正常的執行方式
但是如果我把密碼部分改成 '; delete from users where 1=1 OR pwd='
就會變成殺掉所有的使用者資料
當然你可能會說
網頁使用者怎麼會知道 table還有欄位的名稱
因為大部分的設計也都是會依照比較人性的方式設計
讓設計跟維修的人比較好分析
名稱也就會用比較容易理解的
試久了總會成功的
對於SQL Injection有很多不同的處理方式
以前我會用的方式是將使用者輸入的資料
把單引號' 改成兩個單引號''
這樣輸入的資料就只會被當作字串
不會是另外一段SQL statement
以上只是一個比較簡單的例子
解決方法也是比較拙劣的方法
第一次在值日生文寫電腦技術相關的文章
我看就先寫到這裡吧
有興趣的再來找我討論吧
值日生 NGU
--
青蘋果樹 高中, 國中, 國小 [geniusjazz]
Area1-TPHigh 校友 Σ台北地區高中群組 [ckclark]
YCSH 永春 Σ永春高中 [tobyben]
YCSH_alumni 永春 ●[永春]
記得這裡的愛最多 tobyben/iFEEL
【傲天翔翎】【騁跡絕塵】【春之驕陽】【山城之歌】【蝶舞】【逆天唯我】【青城之戀】
【垃圾袋】 【 花漾 】 【夢。飛行】 【Starry Night】
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 68.45.100.173
推 Jerry195859:以後來個專欄吧XD 10/12 00:07
→ iFEELing:這篇文是在釣宅男嗎..... 10/12 00:10
推 asimon:囧a 10/12 00:11
推 iFEELing:樓上是被釣到的 科科 10/12 00:11
→ iFEELing:偷偷說 我都把半型改全型 科科 10/12 00:14