2007年5月13日 星期日

SQL injection

轉自 http://www.php5.idv.tw/html.php?mod=article&do=show&shid=69
幾年前大家在討論資料庫隱碼的時候當時寫過一篇文章。SQL injection 是針對資料庫,說明資料庫隱碼的運作。但是他只對資料庫有作用嗎?其實並不然,其實在程式設計的過程中,任何的程序都可能會被資料庫隱碼所攻擊。資料庫隱碼本身並不是一種刻意做的入侵工具,而是來自於設計師本身對使用者所輸入的資料沒有進行管控或者是設計師對程式的疏漏造成的效果。

舉例來說 "當一個設計師建了一個房子,而這個房子有一個門",這個門的好壞就是一個關鍵了。

所以:
1.設計師必須要知道,使用者會拿什麼東西來開這個門
2.永遠不要留一個洞然後以為別人永遠不會知道這個洞

我們簡單的來寫一個例子說明資料庫隱碼。一般而言的資料隱碼是針對資料庫運作,所以看一下下面的例子:

PHP CODE:
$sql="select * from a where f='$變數'";

echo $sql;

?>


相信資料在 $變數 這個變數許多的人都會直接將 $變數 帶入你的語法中。但是在資料庫隱碼的方式。hacker會傳進一些特別的資料來破壞你的語法,使的他可以控制你的資料庫。例如傳入 ' or '1 ,那麼你的語法會數變成什麼樣子呢?

PHP CODE: //例如傳如 ' or '1

$sql="select * from a where f='$變數'";
//select * from a where f='' or '1'
echo $sql;

?>

那麼你的資料庫便一口氣被倒了出來,這就是資料隱碼。看起來真是嚇人呀!!(抖)

沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~