初心者向け:ウェブサイトやウェブアプリケーションを安全にする7つのコツ
mihir
2022年8月10日投稿
これは、初めてサイトを作成し、公開準備が整った初心者向けに基本的なコツを書いています。何か足りないところや間違っているところがあれば、コメントで指摘していただけると助かります。では始めましょう。
- SSL証明書を取得する:
これはHTTPSプロトコルで、クライアント(ブラウザ)からサーバーへのデータがデフォルトで暗号化されます。無料でCloudflareを使って取得することもできます。
- 常に.envまたは設定ファイルを使う:
データベース接続文字列やAPIキーをコードファイルに保存しないでください。.envファイルに保存してください(.envファイルって?https://nodejs.dev/learn/how-to-read-environment-variables-from-nodejs)。
注意してください。間違ってそのファイルをgitやbitbucketやリポジトリに含めないようにしてください。
より高度なセキュリティのために、AzureやAWSが提供するシークレットキーボールトマネージャーを使うと良いでしょう。これはセキュリティの追加層となります。
もっと読みたい方は、https://aws.amazon.com/secrets-managerを参照してください。
- データベース/APIへのIPまたはドメインホワイトリスト制限を有効にする:
データベースの制約は本当に役立ち、重要です。開発するローカルマシンのIPアドレスやサーバーのIPなどを指定してください。
もし私のように静的IPがない場合は、ドメインホワイトリストが便利な解決策として使えます。単にサイトのドメインを指定して、DBがそのサービスリクエストのみを処理するようにしてください。
これはAPIや画像にも適用できます。
注意してください。クライアント側からAPIを呼び出すときはこれを忘れないでください。
- フォルダへの読み取り/書き込み権限を確認する:
プロジェクトでは、ファイルをフォルダにアップロードすることを決めることもあります。そのような権限をフォルダに設定する際には注意が必要です。
- データ暗号化:
これはよく知られていますが、ユーザーの機密データは暗号化するべきであり、本当に必要なときまでそうした情報は避けるべきです。例えば、ストライプのコネクトをマーケットプレイスで使っていて、ビジネスのSSNやTax Idが必要な場合は、ストライプに保存し、DBには保存しないでください。
そして、FinやHelth Techアプリを作成する場合は、データの管理や保存の要件を最初に読んでください。退屈かもしれませんが、これは絶対必要です。
- サーバーサイドの検証:
開発を始めたばかりの頃、クライアントサイドの検証だけで十分だと思っていました。しかし、要素の検討だけであなたのアプリのクライアントサイドの検証は吹き飛んでしまいました。 :)
だから、サーバーサイドの検証を追加し、ファイルアップロード機能では、ファイルサイズの検証も設定することを忘れないでください。
- iframeのサポートを無効にする:
サイトがこの機能を必要としていない場合は、add_header X-Frame-Options "SAMEORIGIN";
をサーバーヘッダーに追加してください。これにより、他のウェブサイトでIframe内にあなたのウェブサイトが表示されることを防ぎます。
コメントでフィードバックを共有してください :)
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/mhrnik/7-tips-for-beginners-to-secure-website-or-web-applications-3a76