[はじめに] データベースは電子商取引、金融、ERP システムの基盤であり、通常、重要なビジネス パートナーや顧客の情報が保存されています。ほとんどの企業、組織、政府部門の電子データはさまざまなデータベースに保存されており、これらのデータベースは一部の個人情報を保存するだけでなく、電子商取引、金融、ERP システムの基盤でもあります。重要なビジネスパートナーや
顧客情報。ほとんどの企業、組織、政府部門の電子データはさまざまなデータベースに保存されており、これらのデータベースは一部の個人情報を保存したり、機密の財務データを保管したりするために使用されます。しかし、データベースは通常、オペレーティング システムやネットワークほどセキュリティに注意が払われません。データは企業や組織の生命線であるため、安全なデータベースを選択することが重要です。大規模な Web サイトでは通常、oracle または DB2 が使用されますが、中小規模の Web サイトでは主に、より柔軟でコンパクトな mssql データベースまたは mysql データベースが使用されます。では、同じ条件下で、Microsoft の mssql と無料の mysql ではどちらが安全なのでしょうか?
同じ状況でセキュリティをテスト
するために、管理者アカウントを使用してマシンにデフォルトで mssql と mysql をインストールしました。私のシステム構成は次のとおりです: オペレーティング システム Microsoft Windows 2000 バージョン 5.0、
sp4、ftp サービスと iis サービスがインストールされ、asp と php をサポートしています。システムには管理者アカウント admin が 1 つだけあり、guest アカウントは無効になっていません。
1. システム内部のセキュリティ分析
1.mysqlデータベースの権限制御の問題
mysqlの権限制御は、認可テーブルと呼ばれるmysqlデータベースに基づいており、これには合計6つのテーブル
コマンド select host,user,password,delete_priv,update_priv,drop_priv from user;
mysql> select host,user,password,delete_priv,update_priv,drop_priv from user; +-----------+------+------------------+-------------+-------------+-----------+ | host | user | password | delete_priv | update_priv | drop_priv | +-----------+------+------------------+-------------+-------------+-----------+ | localhost | root |0e4941f53f6fa106 | Y | Y | Y | | % | root | | Y | Y | Y | | localhost | | | Y | Y | Y | | % | | | N | N | N | +-----------+------+------------------+-------------+-------------+-----------+ 4 rows in set (0.00 sec)
最初のコマンドは、root を使用してこのマシンにパスワードでログインし、レコードを削除する権限を持っていることを意味します。 、レコードの変更、テーブルの削除など
大丈夫、安全です。 2 番目の項目は、root を使用してパスワードなしで任意のホストにログインでき、レコードの削除、レコードの変更、テーブルの削除などを行う権限があることを意味します。 3 番目の項目は、このマシンに匿名でログインでき、レコードの削除、レコードの変更、テーブルの削除などを行う権限があることを意味します。最後の項目は、任意のホストから匿名でログインできることを示しますが、権限はありません。明らかに、2 番目、3 番目、4 番目はすべて安全ではありません。 2 番目の場合は言うまでもなく、3 番目の場合と同様に、ローカルにいてゲスト権限を持っている場合でも、mysql データベースにログインし、完全な権限を持つことができます。このようにして、
データベースでやりたいことを何でも行うことができます。
解決策: リモート メンテナンスが必要ない場合は、2 番目の項目
delete from user where host="%" and user="root";
delete from user where host="localhost" and user="";