2

エラーが発生した場合でも値を保持するフォームが必要ですが、入力データがセキュリティ上クリーンであることを確認してください。

<form action="" method="POST">
    <div>
         <label for="first_name">First Name</label>
         <input type="text" name="first_name" value="$_POST['first_name']"/>
    </div>
</form>

$_POST['first_name'] を安全かつ脆弱にしないようにするにはどうすればよいですか?

4

7 に答える 7

6

htmlspecialchars有害な XSS 攻撃の可能性を排除するために使用します。

echo '<input type="text" name="first_name" value="'.htmlspecialchars($_POST['first_name']).'"/>';
于 2012-10-23T03:08:36.327 に答える
1

何に対して脆弱ではありませんか?SQL インジェクション?

そこにデータがある場合はデータを消去する変数を作成したいが、最初にページをロードしたときにエラーをスローしない (そして、投稿データはありません)

それで:

$fname = !empty($_POST['first_name']) ? cleanstuff($_POST['first_name']) : ''

<form>
...
<input...value="<?php echo $fname; ?>"/>
</form>

「cleanstuff」は、データをクリーニングするために必要な関数であり、mysql データベースまたは htmlentities() などをクリーニングする場合は mysql_real_escape_string() です。できれば、ビジネス ロジックに必要なすべてのクリーニングを行うユーザー定義関数を使用します。

于 2012-10-23T03:09:44.450 に答える
0

データはコンテキスト内で脆弱です。たとえば、ユーザーが送信した HTML タグは、データベースに保存しても問題ありません。それらをブラウザにエコーすると、問題が発生します。このため、何かを「脆弱ではない」ものにすることは少し広範です。

ユーザー データを安全にフォーム入力にエコー バックできるようにするには、 http://php.net/manual/en/function.htmlentities.phpおよびhttp://php.net/manual/en/functionを参照してください。ストリップ-tags.php

于 2012-10-23T03:08:51.713 に答える
0
<form action="" method="POST">
    <div>
         <label for="first_name">First Name</label>
         <input type="text" name="first_name" value="<?php echo htmlentities $_POST['first_name']);"/>
    </div>
</form>

Web フォームで htmlentities を使用し、*_real_escape_srting を使用して、サーバーの php コードでの SQL インジェクションを処理します。

于 2012-10-23T03:11:28.283 に答える
-1

データのサニタイズはワンストップ ショップではありません。すべての入力を適切に検証することが重要です。必要な手順は次のとおりです。

$first_name = trim($_POST['first_name']); //remove spaces
$first_name = htmlspecialchars($first_name); //convert special chars to html entities (for XSS)
$first_name = mysql_real_escape_string($first_name); //escape quotes for MySQL

//Now it is important to validate the data (confirm that the name is a name, only contains characters which can be in a name
于 2012-10-23T03:09:44.527 に答える
-1

htmlspecialchars($_POST['first_name'])

これにより、文字列内の HTML がエスケープされます。

于 2012-10-23T03:06:41.440 に答える
-4

入力値をサニタイズするために、さまざまな関数を使用できます。私はお勧め

<?php
//You have many options. You can use htmlspecialchars() to sanitize for XSS (Cross Site Scripting) and mysql_real_escape_string() to prevent SQL Injection. If you are using a MySQL database, I'd recommend both.
$name = mysql_real_escape_string(htmlspecialchars($_POST['first_name']));
?>
<form action="" method="POST">
<div>
     <label for="first_name">First Name</label>
     <input type="text" name="first_name" value="<? echo $name; ?>"/>
</div>

于 2012-10-23T03:08:43.423 に答える