心に留めておくとよいこと:
またはの代わりにPDO
、データベースの目的で調べます。(PDO は、さまざまな種類のデータベース間の違いを単純化するラッパーですが、セキュリティも大幅に単純化します)。mysql
mysqli
PDO のプリペアド ステートメントを使用すると、クエリの作成が 100 倍簡単になり、常にステートメントを準備している限り、SQL インジェクションをほとんど防ぐことができます (これは、PDO でも非常に簡単です) 。
他の 2 つの mysql オプションのいずれかで PDO を使用する方法を学ぶには、15 分間を費やすだけの価値があります。
これにより、データベースが危険にさらされるのを防ぐことができますが、後でユーザーに提供するためにデータベースに保存する可能性のあるデータから保護されるわけではありません。
その点で:
- フォーム入力から GET/POST 値まで、ユーザーから取得したすべてのものを検証します
- ユーザーのページに html として書き込むすべてをエスケープする
- ユーザー入力をそのまま使用したり、クラスを選択したりしないでください (例:
include $_GET["page"];
)
JavaScript -- 私の赤ちゃん:
- クロージャーとモジュール/名前空間パターンについて学びます。
- 作成するすべての大規模なアプリケーションに使用します (特に、ユーザー情報の収集が必要なアプリケーションなど)。
- 開発コンソールを開いて何かを貼り付けるのと同じくらい簡単に、ユーザーがサイトで必要なものを実行するのを防ぐことはできないことを理解してください。
- #3 を理解した上で、#1 と #2 を使用して、#3 を実行しているユーザーがユーザーから提供された (またはユーザーについて保持している) データにアクセスできないようにする方法を学びます。
一般に、ユーザー情報を Cookie や URL 文字列から除外し、できるだけ多くの情報を JS クロージャー、POST リクエスト、およびユーザーのセッション、サーバー側に保持します。