簡単なウェブサイトを開発していて、sqlite データベースを試しています。MySQL とは対照的に、db に接続するときはユーザー/パスワードを言わず、MySQL ではそうします。
したがって、誰でもアクセスできます。機密情報を保持するためのセキュリティ ホールではありませんか?
また、db.sqlite を非表示にしても、サードパーティ プログラム/Web からこのデータベースにクエリを実行して情報を取得することはそれほど難しくありません。
御時間ありがとうございます。
sqlite は、ログインを必要としないと述べたように、ファイルのアクセス許可に依存してデータを保護します。IBMから
SQLite にはユーザー アカウントの概念がなく、代わりにすべてのデータベース権限をファイル システムに依存しています。これにより、ストレージ クォータの適用が難しくなり、ユーザー権限の適用が不可能になります。
データベースを保護する方法は、特定のユーザーのみがデータにアクセスできるようにファイルのアクセス許可を設定することです。Linux で Web サイトを実行している場合は、 を使用してこれらを設定できますchmod
。通常、Web サーバーを独自のユーザー( など)で実行するように設定www-data
し、sqlite ファイルへのアクセスをそのユーザーのみに制限します。例えば:
chown www-data database.db # set ownership of the database.db file.
chmod 600 database.db # allow only read-write by the owner.
これにより、ファイル システムのセキュリティを利用して、サード パーティのプログラムや外部のパーティがデータベースを読み取ることができなくなります。
したがって、誰でもアクセスできます。機密情報を保持するためのセキュリティ ホールではありませんか?
他の人が言ったように、それは SQLite の人々の設計目標ではありませんでした。データベース コードをアプリに直接埋め込むことができるようにするなど、別の目標もありました。
SQLite データベースをパスワードで保護して暗号化できますが、SQLCipherを使用する必要があります。