4

だから私は自分のフォームをhtmlで構築し、JSで検証しました。明らかに、サーバー側でPHPを使用して入力を検証しますが、「送信」タイプを使用してフォームを送信する代わりに、Ajaxを使用してフォームを送信し、サーバー側で検証するのに十分安全かどうか疑問に思っていますボタンと「アクション」属性。基本的に、それを送信するJSに依存するサーバー側の検証を行うことは安全ですか?

ここに私のフォームがあります:

<form name="contactForm" id="contactForm"><!-- The form has no action attribute because its submitted via Ajax -->
<div id="inputsWrapper">
    <div>
        <label for="fullName">Your Name: <span class="required">(required)</span></label>
        <input type="text" name="fullName" id="fullName" title="First &amp; last name" value="First &amp; last name" maxlength="50" />
    </div>
    <div>
        <label for="email">Your E-mail: <span class="required">(required)</span></label>
        <input type="text" name="email" id="email" title="E-mail address" value="E-mail address" maxlength="500" />
    </div>
    <div>
        <label for="subject">In Regards To: <span class="required">(required)</span></label>
        <input type="text" name="subject" id="subject" title="Subject" value="Subject" maxlength="50"/>
    </div>
    <div>
        <label for="message">Your Message: <span class="required">(required)</span></label>
        <textarea name="message" id="message" title="Enter your message here" cols="40" rows="10">Enter your message here</textarea>
    </div>
</div> <!-- End inputsWrapper -->
<input type="button" name="sendBtn" id="sendBtn" value="Send Message" /><!-- This button has a listener assigned to it in JS and submits the form on click -->

ボタンがクリックされると、Ajax は POST 経由でフォームを PHP スクリプトに送信し、有効かどうかのいずれかを返します。これはこれを行う安全な方法でしょうか?アドバイスありがとうございます。

4

2 に答える 2

5

「送信」タイプのボタンと「アクション」属性を使用してフォームを送信するのではなく、Ajax を使用してフォームを送信し、サーバー側で検証するのに十分安全かどうか疑問に思っています。

はい。システム外からのインプットはシステム外からのインプットです。

基本的に、それを送信するJSに依存するサーバー側の検証を行うことは安全ですか?

JavaScript は目立たないようにし、プログレッシブ エンハンスメントを実装する必要があります。

スクリプトへの入力は、Ajax を使用した通常のフォーム送信からのものであっても同じでなければなりません (jQuery の serialize のようなものを使用すれば、これは簡単です) 応答用のJS 。

フォーム送信と Ajax リクエストの処理方法の唯一の違いは、レスポンスのフォーマットです。

いずれにせよ、システムに入ってくるデータは最終的に送信者の管理下にあるため、適切なサニティ チェックとエスケープを実行する必要があります。

于 2012-07-26T08:37:20.403 に答える
5

Ajax またはブラウザーのデフォルトのフォーム投稿動作を介して投稿しても、セキュリティの観点から違いはありません。リクエストはどちらも通常の HTTP POST/GET リクエストです。

于 2012-07-26T08:34:00.517 に答える