我正在使用 php 收集表單數據并將其發送到電子郵件地址。我正在使用 php filter_vars 來清理條目。事實上,這會返回電子郵件正文中的編碼 html。例如,我變成了I'm$message = "";$message = $_POST["message"];$message = filter_var($message, FILTER_SANITIZE_STRING);$message = wordwrap($message, 70);...$Body .= $message;$success = mail($EmailTo, $Subject, $Body, $headers); 我的問題是:如果我在電子郵件中使用 htmlspecialchars_decode $Body .= htmlspecialchars_decode($message),我是否會撤消清理并重新打開漏洞?我將如何安全地將編碼的 html 轉換為 html 實體,以便我的客戶可以閱讀電子郵件?
1 回答

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
FILTER_SANITIZE_STRING
用于剝離標簽,可選擇剝離或編碼特殊字符。
所以你只是剝離標簽并編碼其他東西。要不對引號進行編碼,請使用過濾器標志FILTER_FLAG_NO_ENCODE_QUOTES
:
$message?=?filter_var($message,?FILTER_SANITIZE_STRING,?FILTER_FLAG_NO_ENCODE_QUOTES);
但是,htmlspecialchars_decode($message)
應該沒問題,因為您已經刪除了 HTML 標簽,這只會解碼其他實體,如引號' "
、& 符號&
等。話雖這么說,您可以strip_tags($message)
首先使用將引號和 & 符號單獨保留的位置。
- 1 回答
- 0 關注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消