私はphp(PDO)とMySQLで書かれた簡単な連絡先データベースアプリケーションを持っています。これは、switch case文を持つ単一のファイルです。デフォルトでは、連絡先のテーブルが表示されます。大文字と小文字は、機能の追加、編集、削除などです。すべてのMySQLステートメントは、PDOで準備されたステートメントです。パラメータを持つhtmlリンク、またはパラメータを隠しフィールドとしてPOSTを作成する - セキュリティなど
私の質問は: 移動するにはパラメータ付きのHTMLリンクを使用する方が良いですか、パラメータを隠しフィールドとして使用する方がよいでしょうか。
<a href="?mode=edit&contact_id=321">edit</a>
およびスイッチのための「モード」および$ _GETの文
からパラメータを取得したり、より良い、それを次のとおりです。それぞれの行は、それがより良いリンクを持つことである内のテーブルには、連絡先をリストアップ持っている:
<form method="POST" action="">
<input type="hidden" name="mode" value="edit"/>
<input type="hidden" name="contact_id" value="321" />
<input type="submit" name="submit" value="edit" />
</form>
私はセキュリティの視点と機能の観点から興味があります。私はここで似たような質問をしてきましたが、フォームが良かったと答えた回答が1つしかありませんでした。それは説明と4つのアップノートを持っていなかった。
すべての情報をいただければ幸いです。 乾杯。
非常に便利です、ありがとうございます。私はもっと広い意味で考えていると思います。私はPDOと準備された声明がMySQLの注射攻撃から私のコードを保護していることを知っています、私は私が気づいていない他の悪用からの攻撃に私を開いたままにしていないフォームを使用していることを確認したかっただけです。私は独学で教えていますし、私の知識は少しばかりです。私のアプリケーションは、httpsサイトのメンバーシップウォールの背後にあります。 – Almeister9
HTTPSは誠実にCSRFからあなたを保護しませんが、認証トークンがフォームを保護します。準備されたステートメントは**大きな**予防策ですが、データベース自体の[**最小特権**の原則**](https://en.wikipedia.org/wiki/Principle_of_least_privilege)も選択する必要があります。また、WikiHowは実際にPHP/MySQLiコンボをカバーするための[**素晴らしい記事**](https://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL)を持っていますPDOに簡単に適応できる側面の**トン** –