2017-10-21 88 views
0

我正在使用HTML5創建一個簡單的<form>。只是想確保我沒有失蹤和安全漏洞。我對攻擊瞭解不多,但我認爲消息領域必須有更多的東西,因爲幾乎所有東西都可以在那裏輸入。我可以僅限於文本,但認爲這可能不是非常用戶友好的。正確的HTML5表單驗證

有人甚至可以輸入任何類型的250個字符嗎?有什麼有害的事情可以做到這一點?

<form id="contact_form_id" method="POST" action="" name="contact_form"> 
    <input class="contact_single_line" type="text" id="fname" name="fname" minlength="2" maxlength="25" required type="text" onkeypress="return isAlpha(event)"></input> 
    <input class="contact_single_line" type="text" id="lname" name="lname" minlength="2" maxlength="25" required type="text" onkeypress="return isAlpha(event)"></input> 
    <input class="contact_single_line" type="email" id="email" name="email" minlength="3" maxlength="45" required placeholder="Enter a valid email address" TextMode="email" required data-errormessage-type-mismatch="Invalid!"></input> 
    <textarea id="message" name="message" minlength="2" maxlength="250" required></textarea> 
    <input type="submit" name="submit" id="contact_submit_btn" value="SUBMIT"></input> 
</form> 

同樣使用這個isAlpha函數作爲備份。不知道如果它甚至需要用HTML5驗證器我已經

function isAlpha (evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode (key); 
    var regex = /[A-Za-z_ ]|\./; 
    if (!regex.test(key)) { 
     theEvent.returnValue = false; 
     if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
    } 
+1

不要依賴客戶端進行驗證,可以從客戶端完成一些令人討厭的事情。也保護服務器端。 – Niladri

+0

通過PHP驗證?這是一個PHP腳本,所以我猜這就是你的意思 – NewCodeMan

回答

2

限制在HTML形式的最大長度不阻止攻擊者僞造假的提交 - 這將有什麼被送到沒有限制你的服務器。所以它根本沒有安全價值。您必須檢查您的服務器收到的所有數據,你必須考慮它可能是所有危險。這不是一項微不足道的任務。

+0

好吧,這是很好的建議。一個問題,但。我正在使用Ajax func跳轉到單獨的php來處理數據。如果我在像htmlspecialchars()這樣的php中使用良好的驗證練習,刪除空白等等......那我還在跳頁嗎?是否應該在表單的同一頁面上完成所有事情? – NewCodeMan

+0

網站安全是一個巨大的課題。我建議你首先閱讀關於SQL注入 - 可能的攻擊媒介之一 - 開始獲得一個想法。 – 2017-10-21 19:14:47

+0

好吧,我檢查出來 – NewCodeMan

3

客戶端驗證(HTML 5或JavaScript)僅用於使訪問者的體驗更好 - 任何攻擊者都可以輕鬆繞過它。它用於警告訪問者在將它提交給服務器之前所輸入的內容很糟糕。

如果您想擔心安全性,那麼您需要在服務器端進行操作,並且它需要與您對數據進行的操作有關。