PHP 板


LINE

看板 PHP  RSS
標題想很久不知道怎麼下…… 想請教各位前輩們, 小弟目前在做一個發表留言的功能, 目前希望能做到的就是純文字 + 表情符號(emoji), 未來可能會有放圖片連結然後產生預覽,不過這不是現在需要做的範圍。 環境是php + mysql 目前做到的是,可以辨識出直接輸入emoji,會以unicode儲存, 然後取出來的時候會用文字的方式顯示。 問題點在於,我有找到一個js的插件, 可以讓我在textarea裡面輸入例如「:smile:」,然後他會自動轉成 這樣子:「<span>...略...</span>」的HTML標籤, 透過這個標籤可以用CSS將APPLE emoji的"圖片"顯示出來。 然而,為了安全起見,我在儲存textarea文字時, 已經將「<」、「>」、「/」...等字眼轉存成HTML代碼了,例如:「&lt;」 所以上面那個js插件會變成我在文字框輸入:「:smile:」 結果顯示在網頁時,卻如實顯示「<span>...</span>」 不知道有沒有辦法只讓這個插件的HTML標籤可以順利轉換, 使用者輸入的標籤則一律如實顯示? 附帶一問, 因為小弟第一次寫php網頁, 不知道有沒有什麼比較安全的防止使用者在文字輸入處做攻擊? 目前作法是使用 $text = sub_replace("<", "&lt;", $text); 這樣子,將幾個特殊字元替換掉, 包括:<、>、\、&、\n、空白及雙引號(") 不知道這樣夠不夠安全…… 簡單整理一下問題: 1. 有沒有什麼辦法可以讓使用者輸入特定的文字安全的存進資料庫,   並在取出時將該特定文字以HTML標籤方式呈現,其他非特定文字   則如實呈現? 2. 不知道是否有比單純在存進資料庫前把特殊字元replace掉更好的做法? 補充: 目前已改成在寫入資料庫前這樣做:$text = htmlspecialchars($text); 然後會以ajax的方式,將文章用json格式丟回來,稍微測試過, 感覺上應該ok?(原本replace方式後來發現完全不行……) 第一次發文有點囉嗦,先感謝各位前輩的指導! <(_ _)> --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.191.4
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1468937000.A.AB5.html ※ 編輯: chris07 (42.72.191.4), 07/19/2016 22:07:30 ※ 編輯: chris07 (42.72.191.4), 07/20/2016 00:33:08
1F:推 LPH66: 設法讓你的資料庫裡只存 :smile:, 然後顯示時再透過插件 07/20 04:35
2F:→ LPH66: 問題 2 基本上就是 htmlspecialchars 沒錯 07/20 04:36
3F:推 GALINE: 不是在寫入資料庫前做 html 的 escape,是在顯示 html 07/20 13:16
4F:→ GALINE: 的時候做 html 的 escape... 07/20 13:16
5F:→ GALINE: 不過其他就跟你想的差不多吧。另外是該存 :smile: 還是 07/20 13:17
6F:→ GALINE: <img> 這有算喜好問題,有各自的優缺點 07/20 13:17
7F:→ chris07: 我讓:smile:存進資料庫後就順利顯示了 感謝 07/20 13:28
8F:→ chris07: escape的部份我會再試試看的 不知道存進前跟取出時做esca 07/20 13:30
9F:→ chris07: pe有差在哪裡嗎? 07/20 13:30
10F:推 GALINE: 如果要把訊息塞入 javascript 或信件或其他地方,事先 07/20 15:19
11F:→ GALINE: escape 會讓你沒辦法拿到你真正要的資料 07/20 15:19
12F:推 GALINE: 不管是 html 還是 sql,正確的 escape 時機點都是 07/20 15:22
13F:→ GALINE: 「要用之前的那一行」 07/20 15:22
14F:推 crossdunk: 用PDO ~ 07/20 17:38
15F:推 u315521: 用pdo是否就可不用處理特殊字元 07/20 18:18
16F:→ chris07: 瞭解,感謝各位前輩。我是用PDO沒錯。另外我剛剛發現雖然 07/20 18:30
17F:→ chris07: htmlspecialchars在HTML不會出錯,可是\n就會變成換行符 07/20 18:30
18F:→ chris07: 號而不能直接顯示... 07/20 18:30
19F:→ chris07: PDO主要是擔心SQL injection的部份吧特殊字則是擔心使用 07/20 18:34
20F:→ chris07: 者直接輸入html或script 07/20 18:34
21F:推 banqhsia: 為啥不直接存 emoji 就好惹QQ (資料庫用utf8mb4) 08/04 10:45







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燈, 水草

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

TOP