簡體   English   中英

驗證和清理PHP中的用戶輸入

[英]Validating and Sanitizing user input in PHP

是否使用PHP提供的filter_var()sanitize_var()來過濾和清理變量是最佳實踐,還是有更好的選擇?

謝謝。

讓我們嘗試驗證來自表單的輸入。

我們需要做的第一件事是確認我們正在尋找的輸入數據是否存在。

然后,我們使用filter_input()函數過濾輸入數據。

在下面的示例中,輸入變量“ email”被發送到PHP頁面:

我認為最好先使用HTML5進行客戶端驗證,然后再使用服務器端。 PHP具有過濾字符串的功能,例如FILTER_SANITIZE_STRING(盡管您無需驗證),您可以使用FILTER_VALIDATE_EMAIL而不是使用正則表達式手動驗證電子郵件。 您還可以使用限制,例如字符數等等。

概念上的例子...

if form is submitted 
  if 'name' is not empty
    create a variable that equals filter_var($_POST['name'], FILTER_SANITIZE_STRING)
    if 'name' is empty then set echo an error message

  if 'email is not empty
    create a variable that equals filter_var($_POST['email'], FILTER_SANITIZE_STRING)
    // then you can validate email
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
      error message
  // do this for other variables

  if there's not error
    send email and or a thank you message

 //FORM here

我將始終考慮以下原則...“從不信任用戶輸入” ctype_alpha,ctype_alnum也是驗證的良好執行者,並且記住也要驗證客戶端(javascript驗證),這也將有助於減輕服務器負載

我想提到HTML Purifier用於任何HTML過濾/清理。

對於通用驗證(數字,日期和其他值),有很多庫,也有內置函數,您可以選擇最合適的庫,但是如果您已經使用過Zend Framework,我仍然要提及Zend_Validate

暫無
暫無

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

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