作者foxzgerald (O⊥M)
看板PHP
標題Re: [請益] 這樣的 SQL 輸入為何不行?
時間Sun Sep 28 19:04:23 2008
※ 引述《NetsFan (莫忘初衷)》之銘言:
: <form method="post" name="input_db" action="index.php">
: <input type="text" value="輸入你要的數字" name="db_name1">
: <input type="submit" value="將你輸入的數字寫入資料庫" >
: </form>
: <?php // 這個是連接到資料庫的程式碼
: $get_user_input = $HTTP_POST_VARS['db_name1'];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: .....
: mysql_select_db(DATABASE); // 選擇哪一個 DB
: mysql_query('Insert Into hey Values("$get_user_input")');
^^^^^^^^^^^^^^^
直接將 POST 或是 GET 取得的資料、不經過濾處理,直接用在
資料庫的查詢上是件危險的事情... 小心被有心人用 SQL Injection 攻擊
此外,如果你要將在字串中插入變數,應該要用 " 而非 '
以上例而言應為:
"INSERT INTO hey VALUES ('$get_user_input')";
或是
"INSERT INTO hey VALUES ('{$get_user_input}')";
或是
'INSERT INTO hey VALUES (' . '\'$get_user_input\'' . ')'; //如果堅持使用 '
....等
有興趣可以多研究一下字串值中 " 和 ' 之間的差異
: $query_string = "Select * From Hey";
: $dbSelect = mysql_query ( $query_string ) or die( "Query failed" );
: ....
: ?>
: 我想要使用者輸入資料 傳到%get_user_input中
: 然後再使用 SQL 指令塞東西進去的時候 使用那個變數
: 可是卻不成功,顯示出來每次都是 0...
: 請問我這個用法有用錯嗎 @@ 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.1.239
推 thitbbeb :現在appserv的版本好像都預設啟用magic_quotes_gpc 09/29 13:12
→ thitbbeb :不過還是將magic_quotes_gpc 關掉自行過瀘較好… 09/29 13:13
推 NetsFan :謝謝 受教了。之前有看過 sql injection的相關文章 09/29 20:31