PHP でレコードを更新する場合、アクションの実行 (通常はフォームや POST や PUT などの HTTP メソッド経由) を使用するか、ハイパーリンク (通常は GET メソッドを使用します) は、要約すると セキュリティ となります。 ベストプラクティス。 アクションの実行 が推奨される理由は次のとおりです:
安全
- GET (ハイパーリンク): リンクによってトリガーされるアクションは通常、情報を変更するのではなく取得するために設計された GET HTTP メソッドを使用します。更新または削除に使用すると、機密データ (レコード ID など) が URL に公開される可能性があり、URL 操作や CSRF (クロスサイト リクエスト フォージェリ) などの攻撃に対して脆弱になります。
問題のある例:
<a href="update.php?id=123">Update</a>
ログイン後にコピー
誰でも URL 内の ID を操作して、未承認のレコードを改ざんする可能性があります。
- POST (アクションの実行): 更新では POST メソッドを備えたフォームを使用する必要があります。データは URL ではなくリクエスト本文で送信されます。このアプローチにより、機密情報が隠蔽され、特に CSRF トークンなどの追加のセキュリティ対策と組み合わせた場合、不正な操作がより困難になります。
推奨例:
<form action="update.php" method="POST">
<input type="hidden" name="id" value="123">
<button type="submit">Update</button>
</form>
ログイン後にコピー
HTTP 規約の遵守
HTTP プロトコルには、メソッドごとに明確な意図があります。
- GET: 情報を取得します (冪等で副作用なし)。
- POST/PUT: 情報を送信または更新します (非冪等で副作用あり)。
更新や削除などのアクションに
GET を使用すると、これらの規則に違反し、GET リクエストを安全で副作用のないものとして扱う可能性があるキャッシュやプロキシなどの仲介者を混乱させる可能性があります。
意図しない動作の防止
ハイパーリンクは意図せずにトリガーされる可能性があります (例: 誤ってクリックしたり、リンクをたどるボットなど)。-
- POST を使用するフォーム、特に確認ステップを追加すると、誤って実行される可能性が低くなります。
高度なセキュリティと検証との互換性
フォームを使用すると、次のような追加のセキュリティ対策をシームレスに統合できます。
-
CSRF トークン: 悪意のあるクロスオリジンリクエストを防ぎます。
-
入力の検証: フォームを送信する前にレコード ID を検証します。
-
権限制御: フォームを表示する前にユーザーのアクセス権を確認します。
レコードを更新するには、アクションの実行 (POST または PUT を使用したフォーム経由) を使用することをお勧めします。これにより、セキュリティが強化され、HTTP 規則に準拠し、偶発的なアクションのリスクが軽減されます。ハイパーリンクは、システムの状態を変更しないナビゲーションまたは読み取り専用アクションのために予約されている必要があります。
以上が更新に POST を使用する方がハイパーリンクより安全である理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。