[請益] 想問一題面試可能會考的問題

看板PHP作者 (我操你姐的國家暴力)時間16年前 (2010/01/16 12:34), 編輯推噓1(1012)
留言13則, 5人參與, 最新討論串1/2 (看更多)
忘記在哪邊看到的… <?php $search_author = $HTTP_GET_VARS['search_author']; $result = mysql_query("SELECT count(*) FROM USERS WHERE author=$search_author"); echo "Hello, {$search_author}!"; ?> 請問這段 code 哪邊有問題? 假設 mysql 的 connection 已經在別的地方建立了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.19.236

01/16 12:45, , 1F
如果$search_author 是字串,那SQL要加引號。
01/16 12:45, 1F

01/16 12:46, , 2F
...WHERE author = '".$search_author."'"
01/16 12:46, 2F

01/16 12:47, , 3F
在考慮安全性問題,先處理SQL injection 的情況。
01/16 12:47, 3F

01/16 15:26, , 4F
問題: 沒有做驗證動作 撈資料庫幹嘛?
01/16 15:26, 4F

01/16 15:27, , 5F
$HTTP_GET_VARS <-- 早就不在這樣用了
01/16 15:27, 5F

01/16 15:29, , 6F
所以取得的get變數要用addslashes 處理過..
01/16 15:29, 6F

01/16 15:59, , 7F
不但是addslashes吧,有的時候你要連htmlspecialchars也要
01/16 15:59, 7F

01/16 16:00, , 8F
判斷
01/16 16:00, 8F

01/16 19:09, , 9F
這段code有SQL injection跟XSS漏洞
01/16 19:09, 9F

01/16 19:09, , 10F
使用 mysql_real_escape_string() 處理 $search_author
01/16 19:09, 10F

01/16 19:10, , 11F
輸出$search_author前使用 htmlspecialchars() 跳脫特殊字元
01/16 19:10, 11F

01/16 23:32, , 12F
問題大概是這個query完全脫褲子放屁 XD
01/16 23:32, 12F

01/16 23:33, , 13F
query跟後面歡不歡迎無關,那還query幹啥
01/16 23:33, 13F
文章代碼(AID): #1BKK7Ikq (PHP)
文章代碼(AID): #1BKK7Ikq (PHP)