サーバーセキュリティの経験: 不正ログインの防止
著者:Eve Cole
更新時間:2009-07-24 15:42:20
1. プログラムがデータベースに接続するために使用するアカウント/パスワード/権限など、データベースのセキュリティを構成します。ニュースを閲覧する場合は、モジュールごとに異なるアカウント/権限を使用できます。さらに、データベースのどのストアド プロシージャを呼び出すことができるかについても厳密に構成する必要があり、注入後にシステム コールを行うためにデータベースのストアド プロシージャが使用されないように、未使用のストアド プロシージャはすべて無効になります (特に cmd)。
2. クライアントによって送信されたパラメータを取得するとき、パラメータの長さ、パラメータのタイプなどを含む厳密なフィルタリングを実行します。
3. 可能であれば、管理者のバックグラウンドを厳密に保護し、特定の IP アクセスのみを許可するように設定する必要があります (たとえば、管理者のネットワーク セグメントへのアクセスのみを許可する)。これは実際の状況によって異なります。
4. オペレーティング システムを安全に設定して、挿入後にシステム関数が呼び出されないようにする。
cmd.exe/tftp.exe/ftp.exe/net.exe
これらのファイルはすべて他のディレクトリに転送され、ディレクトリには厳密なアクセス許可が割り当てられます。
5. ネットワークアクセス制御を設定します。
6. 可能であれば、ウイルスや悪意のあるスクリプトなどをフィルタリングするために HTTP のコンテンツ フィルタリングを構成します。
7. 必要に応じて、多くのインジェクション ツール スキャンを防止できる HTTPS の選択を検討できます。私がインジェクション検出ツールを開発したときに HTTPS のサポートを検討しましたが、まだ実装されていません。
一般に、プログラムではアクセス許可やパラメータ フィルタリングなどの問題が主に考慮され、アクセス許可には主に IIS の参照アクセス許可とデータベース呼び出しアクセス許可が含まれることにもお気づきかと思います。さらに、データベースとオペレーティング システムのセキュリティ構成も考慮する必要があります。さらに、画像のアップロードなど、開発プロセス中に他の人が開発したコンポーネントを使用することになるでしょうか。または、開発プロセス中に、ほとんどの人がそれらのコンポーネントを使用することになるでしょう。ユーザーのログイン認証など、インターネットや書籍で提供されているコードも研究する必要があります。