ただし、通過するコードがあまりないため、これに答えるのは困難です。
使用しないでくださいPHP_SELF
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
生の値を使用するとサイトがXSS攻撃にさらされる可能性があるため、これを行わないでください。少なくとも値をサニタイズしてください。自分への投稿は次のように簡単に行うことができます。
<form action="" method="POST">
または、フォームの宛先として絶対(および静的)URIを使用します。
補遺
フレームワークxyzを使用して小さなサイトをホストしているため、または一部のブラウザがそれを停止するため、他の人にあなたがそれに対して魔法のように保護されていると思わせないでください。自分で調べて、適切な行動を取ります。
SSLの場合
機密データを送信する場合は、SSLを使用する必要があります。それ以外のものは、比較すると冗談です。
CSRFについて
サイトの状態を変化させ、Cookieを使用してセッションを永続化するフォームは、CSRFトークンで保護する必要があります。トークンはフォーム送信の一部である必要があり、使用されると再生成されます。
SQLインジェクションについて
mysql_*
新しいコードで関数を使用しないでください。それらはもはや維持されておらず、公式に非推奨になっています。赤いボックスがか?代わりにプリペアドステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを決定するのに役立ちます。PDOを選択した場合は、ここに優れたチュートリアルがあります。
ちょっとした情報(実際にはセキュリティとは関係ありません)
if(isset($_POST['submit'])) {
//Handle the form here with many $_POST['namehere']
}
このコードは、フォームに。という名前の送信ボタンが常にあることを前提としていますsubmit
。より一般的なアプローチは、この条件を使用することです。
if ($_SERVER['HTTP_METHOD'] === 'POST') {
// something was submitted
if (isset($_POST['email'], $_POST['password']) {
// email and password submitted
// you may still wish to verify whether a "valid" email was given
}
}