PHP 板


LINE

看板 PHP  RSS
※ 引述《ahoo122002 (承讓)》之銘言: : 請問mysql_real_escape_string? : 有大約google了一下sql injection : 之後想說這樣寫ok嗎? : 1. : function test($value){ : return mysql_real_escape_string($value); : } : $name = test($_POST["name"]); : $password = test($_POST["password"]); escape sql 是在有 SQL 的地方才應該做的事情 沒有SQL 的時候 escape ...沒什麼 OK 不 OK 可言... : 2. : <?php : function mysql_escape_mimic($inp) { : // blah blah : return $inp; : } : $name = mysql_escape_mimic($_POST["name"]); : $password = mysql_escape_mimic($_POST["password"]); 不要寫自己的 escape function,要用別人寫好的 這世界比你以為的險惡太多... 你寫的方法看起來跟 addslashes() 滿類似的 那麼就有可能被人用塞入奇怪的多 byte 字元攻破 操作方法像是這篇 http://www.securityidiots.com /Web-Pentest/SQL-Injection/addslashes-bypass-sql-injection.html : 有高手可以提供其他好的寫法嗎? : 先不談PDO,ORM <----這還不太懂 還是談一談比較好,用 PDO 比較不容易作錯事情... // 1. DB 先生,你好,我要跟你建立連線 // 2. DB 先生,我等下要下這句 SQL,其中有個參數叫做「:name」 // 真的執行的時候我會跟你說會「:name」的內容是什麼 // 3. DB 先生,「:name」 的內容是 $_POST['name'],請跑我剛剛那句 SQL // 4. DB 先生,請把剛剛執行的結果回給我 $db = new PDO('mysql:host={機器的IP};dbname={DB的名字}', '帳號', '密碼'); $db->prepare('SELECT * FROM user WHERE name=:name'); $db->execute([':name' => $_POST['name']]); $result = $db->fetchAll(); 其中那個 prepare() 在做的事情叫做「prepared statement」,細節請自己找 然後這樣下的話 DB 會幫你搞定 escape 之類的事情,你可以完全不用管 不用自己 escape,那就不會 escape 錯... 然後 ORM 其實只是把 DB 操作包裝起來而已,寫 code 的時候連 DB 在哪都不用管了 且 ORM 不是個標準,很多人在寫,大家寫的都不太一樣... 以下是 Laravel 的範例 // 查詢使用者資料 // 錢包扣一百元 // 存檔 $member = Member::where('name', '=', )->first(); $member->money = $member->money - 100; $member->save(); 一個 row 拉出來會變一個物件,然後可以直接改物件的內容來改資料 ORM 就是這件事... 好處是有人覺得這樣寫比較直覺(也有人不這麼認為) 然後你不用管 escape ,現代的 ORM 會幫你搞定(通常是透過底層的 PDO) ORM 連 SQL 都不太讓你寫... 不用自己 escape,就不用擔心 escape 錯東西 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.58.126
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1439038082.A.307.html ※ 編輯: hiigara (114.27.58.126), 08/08/2015 20:53:24
1F:推 ahoo122002: 是否只有文字輸入的部份,要防sql injection 08/10 19:45
2F:推 LPH66: 所有外來的東西 (不論是不是輸入框) 都要防 08/10 21:52
3F:→ MOONRAKER: 是阿,是否只有參數要防injection? 參數和SQL stmt 08/11 10:33
4F:→ MOONRAKER: 一定要在一起escape才算數嗎?SQL stmt又不會有外來的 08/11 10:34
5F:推 ahoo122002: 針對第1個寫法,想說大家都知道,所以省略sql,才只貼 08/12 19:50
6F:→ ahoo122002: 部份程式碼,來問大家。 08/12 19:50
那你就只是幫 mysql_real_escape_string() 改個名字而已? ※ 編輯: hiigara (211.23.191.35), 08/12/2015 23:07:12
7F:→ ahoo122002: 就寫個function,要用到的就run 08/13 19:12







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP