2017-10-21 10 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関数をバックアップとして使用します。それはあなたのhtml形式でMAXLENGTHを制限すること偽の提出を鍛造からの攻撃を防ぐことはできません、私がしているすでに

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

HTML5のバリデータでも、必要であればわからない - に送られるものに制限がありませんであろうとあなたのサーバー。したがって、セキュリティ上の価値は全くありません。 である必要があります。サーバーで受信したすべてのデータを確認するには、それはすべて危険かもしれないと考える必要があります。それは簡単なことではありません。

+0

それは良いアドバイスです。しかし、1つの質問。私は別のPHPにジャンプしてデータを処理するAjax関数を使用しています。私がhtmlspecialchars()のようなphpで良い検証の練習をしている場合、空白を取り除くなど...それは私がそのようなページをジャンプしていることはまだ悪いですか?フォームと同じページですべてを行う必要がありますか? – NewCodeMan

+0

ウェブサイトのセキュリティは大きな課題です。攻撃の可能性のあるものの1つであるSQLインジェクションを読んでから、アイデアを得ることをお勧めします。 –

+0

よろしくお願いします – NewCodeMan

3

クライアント側の検証(HTML 5またはJavaScript)は、訪問者の経験をより良くするためにのみ役立ちます。攻撃者は誰でも簡単に回避できます。訪問者に彼らが入力した内容がサーバーに送信される前に悪いことを警告するために使用されます。

セキュリティについて心配したいのであれば、サーバー側で行う必要があり、データで何をしているのかを文脈に沿って理解する必要があります。

関連する問題