Website-development-security

提供:Dev Guides
移動先:案内検索

ウェブサイト開発-セキュリティ

Webページのセキュリティは、開発と同じくらい重要です。セキュリティを損なう恐れのある脅威は、ビジネスの評判を傷つけたり、(オンライン預金を盗むことによって)財務的に損害を与えたり、Webサイトにアクセスするクライアントに損害を与えたりする可能性があるためです

セキュリティの専門家によると、彼らは OWASP TOP 10 に基づいてWebサイトのセキュリティチェックを行うことを提案します。これは、Webアプリケーションセキュリティの強力な認識ドキュメントです。 OWASPのトップ10は、最も重要なWebアプリケーションのセキュリティ上の欠陥についての幅広いコンセンサスを表しています。

SQLインジェクション

SQL、OS、LDAPインジェクションなどのインジェクションの欠陥は、信頼できないデータがコマンドまたはクエリの一部としてインタープリターに送信されるときに発生します。 攻撃者の悪意のあるデータは、インタープリターをwithoutして意図しないコマンドを実行させたり、適切な許可なしにデータにアクセスさせたりする可能性があります。

ソリューション-WebページをiSQLから保護するには、入力とフィルタリングシンボルを検証する必要があります。

注入

壊れた認証とセッション管理

認証とセッション管理に関連するアプリケーション機能は、多くの場合正しく実装されていないため、攻撃者はパスワード、キー、セッショントークンを侵害したり、他の実装の欠陥を悪用して他のユーザーの身元を推測したりできます。

解決策-この欠陥からサイトを保護するには、有効期限付きのCookieとセッションを作成する必要があります。

クロスサイトスクリプティング(XSS)

XSSの欠陥は、アプリケーションが信頼できないデータを取得し、適切な検証やエスケープなしでWebブラウザーに送信するたびに発生します。 XSSを使用すると、攻撃者は被害者のブラウザでスクリプトを実行し、ユーザーセッションをハイジャックしたり、Webサイトを改ざんしたり、悪意のあるサイトにリダイレクトしたりできます。

ソリューション-これに対する保護は、iSQLの場合と同じ行にあります。

スクリプト

安全でない直接オブジェクト参照

開発者がファイル、ディレクトリ、データベースキーなどの内部実装オブジェクトへの参照を公開すると、オブジェクトへの直接参照が発生します。 アクセス制御チェックやその他の保護がなければ、攻撃者はこれらの参照を操作して不正なデータにアクセスできます。

解決策-このようなファイルを保護するには、パスワードなどの特定の保護メカニズムを実装する必要があります。

セキュリティの設定ミス

優れたセキュリティを実現するには、アプリケーション、フレームワーク、アプリケーションサーバー、Webサーバー、データベースサーバー、プラットフォーム用に定義および展開された安全な構成が必要です。 多くの場合、デフォルトは安全ではないため、安全な設定を定義、実装、および維持する必要があります。

ソリューション-ソフトウェアは最新の状態に保つ必要があります。

機密データの露出

多くのWebアプリケーションは、クレジットカード、納税者番号、認証資格情報などの機密データを適切に保護しません。 攻撃者は、このような弱く保護されたデータを盗んだり変更したりして、クレジットカード詐欺、個人情報の盗難、またはその他の犯罪を行うことができます。

ソリューション-機密データは、保存中または転送中の暗号化などの特別な保護に加え、ブラウザと交換する際の特別な予防措置に値します。

機能レベルのアクセス制御がありません

ほとんどのWebアプリケーションは、UIでその機能を表示する前に、機能レベルのアクセス権を確認します。 ただし、アプリケーションは、各機能にアクセスするときにサーバー上で同じアクセス制御チェックを実行する必要があります。 要求が検証されない場合、攻撃者は適切な承認なしに機能にアクセスする要求を偽造できます。

ソリューション-認証のレベルを確認する必要があります。

クロスサイトリクエストフォージェリ(CSRF)

CSRF攻撃により、ログオンしている被害者のブラウザは、被害者のセッションCookieやその他の自動的に含まれる認証情報を含む偽造HTTPリクエストを脆弱なWebアプリケーションに送信します。 これにより、攻撃者は被害者のブラウザに、脆弱なアプリケーションが被害者からの正当なリクエストであると考えるリクエストを生成させることができます。

解決策-最も一般的に使用される予防策は、予測不可能なチャレンジベースのトークンをWebサイトからの各リクエストに添付し、それらをユーザーのセッションに関連付けることです。

既知の脆弱性を持つコンポーネントの使用

ライブラリ、フレームワーク、その他のソフトウェアモジュールなどのコンポーネントは、ほとんどの場合、完全な権限で実行されます。 脆弱なコンポーネントが悪用された場合、そのような攻撃は深刻なデータ損失またはサーバー乗っ取りを促進する可能性があります。 既知の脆弱性を持つコンポーネントを使用するアプリケーションは、アプリケーションの防御を弱体化させ、さまざまな攻撃と影響を可能にします。

ソリューション-コンポーネントのバージョンに脆弱性があるかどうかを確認し、別のバージョンで回避または変更を試みてください。

無効化されたリダイレクトと転送

Webアプリケーションは、ユーザーを他のページやWebサイトに頻繁にリダイレクトおよび転送します。 これらのアプリケーションは、信頼できないデータを使用して宛先ページを決定します。 適切な検証がなければ、攻撃者は被害者をフィッシングまたはマルウェアサイトにリダイレクトしたり、転送を使用して不正なページにアクセスしたりできます。

ソリューション-常にURLを検証します。

安全な使用プロトコル

これは、VPSプランがあり、すべてを自分で管理する場合です。 サービスがインストールされると、デフォルトのポートが使用されます。 ハッカーはどこを見ればよいかを知っているので、これにより仕事が簡単になります。

ウェブサイトのホスティングで使用される主なサービスポートのいくつかを以下に示します-

  • SSH –ポート22
  • FTP –ポート21
  • MySQL –ポート3306
  • DNS –ポート53
  • SMTP –ポート25

これらのサービスのポート変更は、オペレーティングシステムとそのバージョンによって異なります。 これに加えて、ファイアウォールをインストールする必要があります。 Linux OSの場合、 IPtables を推奨し、他のすべての不要なポートをブロックします。 OSがWindowsの場合、組み込まれているファイアウォールを使用できます。

サービスでブルートフォースログインをブロックするには、Linuxベースのソフトウェアである Fail2ban を使用し、すべてのIPアドレスをブロックして多くのログイン試行の失敗を防ぎます。