簡體   English   中英

如果我使用以下內容,是否正式使用表單驗證?

[英]Is Regex for Form Validation if I use the following?

我知道無論如何添加它都沒有害處,但我很好奇......

如果我要使用htmlentities(); 使用ENT_QUOTES然后使用mysql_real_escape_string(); 在將變量輸入數據庫之前的變量,然后只需使用html_entity_decode(); 與stripslashes(); 顯示信息......

這仍然是安全的嗎?

在將數據存儲到數據庫之前,您不需要使用htmlentities。 事實上,如果你不這樣做,它會讓事情變得更容易。 在HTML輸出中回顯它們時,只對字符串使用htmlentities(無論是從數據庫還是從其他來源獲取字符串)。

從數據庫中獲取數據后,您不需要對數據應用stripslashes。 數據庫沒有存儲額外的轉義字符 - 除非您錯誤地應用了雙重轉義。

這是正確的順序:

  1. 從表單中獲取數據

     $input = $_GET["input"]; 
  2. 申請逃脫一次

     $quoted_input = "'" . mysql_real_escape_string($input) . "'"; 
  3. 將其插入數據庫

     $sql = "INSERT INTO MyTable (column1) VALUES ($quoted_input)"; $success = mysql_query($sql); 
  4. 稍后從數據庫中獲取它

     $sql = "SELECT column1 FROM MyTable"; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); $data = $row["column1"]; 
  5. 輸出時應用htmlentities 一次

     echo htmlentities($data); 

如果您知道這些函數的用途,您可以自己回答這個問題:

如果您只想保護自己免受SQL注入,請將mysql_real_escape_string用於MySQL查詢中使用的數據。 您還可以使用預准備語句或參數化查詢構建器(請參閱准備語句的SQL語法PDO - 准備語句和存儲過程MySQLi :: prepare等)。

你問的是你是否還需要正則表達式作為所有這些功能旁邊的表單驗證?

如果這就是你所要求的那么在我看來是的,你永遠不夠安全。 我剛剛編寫了一個驗證類,其函數可以在需要特定輸入時使用正則表達式清理代碼和其他函數。

暫無
暫無

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

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