MySQL を使用する場合、セキュリティの問題を無視することはできません。 MySQL によって要求される 23 の注意事項は次のとおりです。
1. クライアントとサーバー間の接続が信頼できないネットワークにまたがって通過する必要がある場合は、SSH トンネルを使用して接続の通信を暗号化する必要があります。
2. setpassword ステートメントを使用してユーザーのパスワードを変更するには、まず「mysql -u root」でデータベース システムにログインし、次に「mysql> update mysql.user set password=password('newpwd')」を実行します。 、最後に「フラッシュ」権限を実行する」だけで済みます。
3. 防御する必要がある攻撃には、可用性や耐障害性を含まない、盗聴防止、改ざん、リプレイ、サービス妨害などが含まれます。すべての接続、クエリ、その他の操作は、ACL (アクセス コントロール リスト) に基づくセキュリティ対策を使用して完了します。 SSL 接続もある程度サポートされています。
4. root ユーザー以外のユーザーは、mysql メイン データベースのユーザー テーブルにアクセスできません。
ユーザー テーブルに保存されている暗号化されたユーザー パスワードが漏洩すると、他のユーザーはユーザー名/パスワードを使用して対応するデータベースを自由に使用できます。 ;
5. ユーザーのアクセス制御を実行するには、grant および revoke ステートメントを使用します。
6.
パスワードの設定には、md5() や sha1() などの一方向ハッシュ関数を使用しません。
8.ファイアウォール
を使用して外部の危険を 50% 除去し、データベース システムをファイアウォールの内側で動作させるか、DMZ エリアに配置します。
9. nmap を使用してインターネットからポート 3306 をスキャンします
。、または telnet server_host を使用します。 3306 メソッドのテストでは、信頼されていないネットワークからデータベース サーバーの TCP ポート 3306 へのアクセスを許可できないため、ファイアウォールまたはルーターで設定を行う必要があります。
10. 不正なパラメータが不正に渡されるのを防ぐため
。ただし、where ID=234 OR 1=1 と入力するとすべてが表示されるため、Web フォームで文字列を使用するには '' または "" を使用し、動的 URL に %22 を追加して表現します。
二重引用符、%23 はポンド記号を表し、%27 は単一引用符を表します。未チェックの
値を mysql データベースに渡すことは非常に危険です。
11. mysql にデータを渡すときにサイズを確認します。
データベースに接続するには、一般的なユーザー アカウントを使用し、必要なアカウントのみを開く必要があります。 権限はユーザーに与えられます。
13. さまざまなプログラミング インターフェイス (C C++ PHP Perl Java JDBC など) で特定の「エスケープ文字」関数を使用します。
インターネット上で mysql データベースを使用する場合は、プレーン テキスト データの送信を減らし、SSL と SSH を使用して、暗号化されたデータ
が送信されるようにしてください
。-i eth0 -w -src または dst ポート 3306 文字列。 mysql データベース サービスを通常のユーザーとして開始します。
15. テーブルへのリンク シンボルを使用しないで、パラメーター --skip-symbolic-links を選択します。
16. mysql ディレクトリでデータベース サービスを開始するユーザーのみを選択します。ファイルの読み取りおよび書き込み権限。
17. プロセス権限またはスーパー権限は、管理者以外のユーザーに付与することはできません。mysqladmin プロセスリストは、クライアント接続を切断するために使用できます。サーバー操作パラメータのステータス、およびサーバーのコピーおよびレプリケーション データベースの制御。
18. データ「/etc/passwd」をテーブルにロードしてから select を使用して表示する問題を防ぐため、ファイル権限は管理者以外のユーザーには付与されません。 19.
DNS サービス会社のサービスを信頼しない場合は、名前許可テーブルに IP 数値アドレスのみを設定します。
20. max_user_connections 変数を使用して、mysqld サービス プロセスの接続数を制限します。
21. Grant ステートメントはリソース制御オプションもサポートします。
22.
mysqld サービス プロセスのセキュリティ オプション スイッチを開始します (--local-infile=0 または 1)。0 の場合、クライアント プログラムはローカル ロードを使用できません。 data の例: mysql.user での Grant insert(user) to 'user_name'@'host_name' ; を使用する場合 -- Skip-grant-tables システムは、任意のユーザーのアクセスに対するアクセス制御を実装しません。 mysqladmin flash-privileges または mysqladmin reload を使用してアクセス制御を有効にします。デフォルトでは、showdatabases ステートメントはすべてのユーザーに公開されており、--skip-show-databases を使用してオフにできます。
23. 「エラー 1045 (28000) アクセスが拒否されました (ユーザー'root'@'localhost' (パスワードを使用:NO)) 」エラーが発生した場合は、パスワードをリセットする必要があります。具体的な方法は、まず --skip-grant から開始します。 -tables パラメータ mysqld を実行し、次に mysql -u root mysql,mysql>update user setpassword=password('newpassword') where user='root';mysql>Flush権限; を実行し、最後に mysql を再起動します。