アプリケーションを攻撃 (SQL インジェクション、XSS など) から保護します。

アプリケーションを攻撃する方法はたくさんあります。 ただし、最も基本的で一般的に使用される攻撃を防ぐ方法を説明したいと思います。

SQL Injection

  • データベースに接続するアプリケーションの場合、多くの場合、クライアントからのリクエストを使用してデータベースに直接クエリを実行します。 破壊者はこれを利用してデータベースを攻撃します。
  • 例: ログイン機能。 リクエストにより、ユーザー名とパスワードがサーバーに送信されます。 このユーザー名とパスワードを使用して、データベース内で直接クエリを実行します。 ステートメントは次のとおりです: SELECT * FROM user WHERE username=’username’ AND passwd=’password’
  • 攻撃者がユーザー名を ‘ OR ‘1’=’1 に変更した場合。 クエリは SELECT * FROM user WHERE username=” OR ‘1’=’1′ AND password=’abc’ になります。 これで、すべての条件が有効になり、クエリは正しい結果を返します。 テーブルやデータベースを削除するコードを挿入する破壊者を想像してみてください。それは非常に危険です。
  • 現在、すべてのフレームワークはビルダー クエリを通じてこの防止をサポートしています。 これは、テンプレートが提供され、入力のパラメータがテキスト型、数値型などになることを意味します。
  • パラメータをエンコードし、特殊文字をエスケープします。
  • 結論: SQL インジェクションを回避するには、クエリ文字列 (RAW) を使用してクエリを実行すべきではありません。 または、使用する場合は、クエリを実行する前にデータを処理します。 フレームワークによって提供されるクエリ ビルドを使用します。

CSRF

  • Web サイト アプリケーションは、処理のためにフォーム データをサーバーに送信します。 攻撃者がこのパケットをキャプチャし、別の形式のデータをサーバーに偽造したらどうなるでしょうか?
  • これを防ぐために、CSRF トークンを使用します。 送信時にサーバーに送信されるデータにはトークンが付属します。 サーバーはこのトークンが有効であることを確認し、アクセスを許可するかどうかを判断します。

XSS

  • これはクライアントからの攻撃です。 フォーラムや投稿でよく見られます… 投稿の内容をチェックせず、データベースに直接保存するという抜け穴を利用して、攻撃者はこの点を利用して JavaScript を実行して情報を取得し、Web サイトに移動し、ログアウトします。
  • ファイルアップロード機能を備えたWebサイトでは、ファイル形式が非常に重要です。 サーバーへの php ファイルのアップロードを許可すると、攻撃者はそのファイルをシェルとして使用してシステム全体を攻撃します。
  • これを防ぐ方法は、データベースに保存する前に特殊文字をエスケープすることです。 ファイルアップロード許可のファイル拡張子形式
Bài viết liên quan