簡體   English   中英

我可以使用htmlspecialchars($ email,ENT_QUOTES,'UTF-8')代替filter_sanitize_email()

[英]Can I use htmlspecialchars($email, ENT_QUOTES, 'UTF-8') instead of filter_sanitize_email()

我對htmlspecialchars()很有信心,可以如標題中所述清理用戶輸入的數據。 但是,為了清理電子郵件,我仍然可以代替FILTER_SANITIZE_EMAIL()使用它嗎? 如果我已經使用過FILTER_VALIDATE_EMAIL()

在用戶輸入上使用htmlspecialchars是一種防止XSS攻擊的方法,並且是一種在輸出數據時(而不是在保存數據時)安全的方法。

假設用戶提交了以下內容:

<span onclick="alert('evil script')">something that seems normal</span>

您可能希望完全按照用戶提交內容的方式保存內容。 但是,當您顯示它時,應該使用htmlspecialchars (或htmlentities )將一些特殊字符轉換為實體,以防止瀏覽器解釋它們。

過濾器擴展中的功能之一上使用的FILTER_VALIDATE_EMAIL標志是一種驗證用戶數據的方法,並且這是保存用戶數據之前需要完成的過程。

有關防止xss的更多詳細信息,請參見此處

FILTER_SANITIZE_EMAIL確保字符串是電子郵件地址。

htmlspecialchars使字符串可以安全地插入HTML。

它們是完全不同的事物,在任何情況下都不能相互替代。

 Provided I have already used FILTER_VALIDATE_EMAIL

然后,如果您已經驗證了字符串,那么該字符串將如何包含除電子郵件以外的其他任何內容。

如果即使驗證失敗也要輸出給定的電子郵件,則可以,您應該在電子郵件字符串上使用htmlspecialchars()或僅通知它不是有效的電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM