※ 引述《walilecow (三重捷運套房頂讓)》之銘言:
: ※ 引述《waiting76 (waiting)》之銘言:
: : 想請問一下
: : $show=mysql_query("select * from addressList",$conn);
: : 由於這句是寫在函式裡面
: : 可是需要呼叫函式外面建立的資料表addressList
: : 我就想說改成
: : $addressList=$_GET[addressList];
: : $show=mysql_query("select * from $addressList",$conn);
: : 但是網頁跑出來是說不對
: : 是因為select後面不能加變數的關係嗎?
: : 不知道如果要呼叫函式外面的資料表可以怎麼寫
: : 感謝閱讀~
: 如果是數字的話建議使用intval
: 如果是字串建議使用addslashes
: 例如: "SELECT * FROM table_name WHERE id=".intval($_GET['id'])
: "SELECT * FROM `user` WHERE name=\"".addslashes($_GET['name'])."\""
看到底下的推文就忍不住來回一下文了...XD
有人提到說 mysql_real_escape_string() 比較安全, 其實這個並不盡然啊...
因為攻擊是多樣性的...
http://0rz.tw/5G3PW
這一篇是歷時了四年的討論串, 雖然只有二頁, 而且後面快離題了...XD
裡面所舉的一個例子:
PHP Code:
$sub = mysql_real_escape_string("%something"); // still %something
mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");
這裡引發的又是另外一種的攻擊...(3F的回文中所引用到的PDF檔有詳細的說明)
(建議把那篇PDF載下來閱讀)
==========我是分隔線============
以我自己的實務經驗,addslashes再配合一些變數條件限定其實就蠻夠用了...
之前被很多資安廠商掃過,也沒有跳出過什麼問題出來...(不過也不代表絕對沒問題 囧)
(機器掃瞄總是比較笨的...XD)
心得:多花點時間,多弄些條件限定(過濾),被攻擊的可能性就會少了一點~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
→
03/10 00:19, , 1F
03/10 00:19, 1F
→
03/10 00:20, , 2F
03/10 00:20, 2F
→
03/10 00:21, , 3F
03/10 00:21, 3F
推
03/10 01:28, , 4F
03/10 01:28, 4F
推
03/10 02:55, , 5F
03/10 02:55, 5F
→
03/10 02:58, , 6F
03/10 02:58, 6F
→
03/10 02:58, , 7F
03/10 02:58, 7F
→
03/10 09:21, , 8F
03/10 09:21, 8F
→
03/10 09:22, , 9F
03/10 09:22, 9F
討論串 (同標題文章)