Webサービスを作成し運用し続けるには、セキュリティに対する意識が必要です。
ユーザーの情報が漏洩したり、攻撃を受けるなどしてサービスが存続できなくなるリスクがあります。
この記事では、Webサービスを作成する際に気をつけるべきセキュリティ対策について紹介します。
ユーザーのインプットに対するエスケープ
ユーザーからの入力値をそのまま表示すると、クロスサイトスクリプティング(XSS)攻撃を受ける可能性があります。
例えば以下のようなインプットをそのまま表示すると、HTMLタグがそのまま解釈されてしまい、意図しない動作を引き起こす可能性があります。
<script>window.open('https://example.com');</script>
これを防ぐためには、ユーザーからの入力値をエスケープする必要があります。
具体的には <
>
&
などの特殊文字をエスケープすることで、HTMLタグとして解釈されないようにします。
SQLインジェクション
ユーザーのインプットに関してもう一つ気をつけるべき攻撃がSQLインジェクションです。
ユーザーからの入力値をそのままSQLクエリに埋め込むと、SQLインジェクション攻撃を受ける可能性があります。
例えば以下のようなSQLクエリを実行すると、ユーザーからの入力値によっては意図しない動作を引き起こす可能性があります。
SELECT * FROM users WHERE name = 'ユーザーからの入力値';
この入力値に対して ' OR 1=1; --
などを入力されると、SQLクエリが以下のようになり、全てのユーザー情報が取得されてしまいます。
SELECT * FROM users WHERE name = '' OR 1=1; --';
これを回避するためにはSQLを実行する際にはプレースホルダーを使い、ユーザーからの入力値を直接SQL埋め込まないようにします。
SELECT * FROM users WHERE name = ?;
AWS WAFなどのSaaSを使うことで、XSS, SQLインジェクション攻撃を防ぐこともできます。
DoS攻撃
ユーザーからの悪意ある操作の他に、DoS(Denial of Service)攻撃を受ける可能性もあります。
DoS攻撃は、サービス提供者の意図に反してサービスを利用できなくする攻撃で、大量のリクエストを送信したり大容量ファイルをアップロードするなどでサービスをダウンさせることがあります。
アップロードされるファイルの容量制限や、リクエストの制限などを設けることで、DoS攻撃に対する対策を行うことができます。
まとめ
SaaSを使うことでセキュリティ対策を簡単に行うこともできますが、Webサービスを構築する際にはコードでもセキュリティに対する意識が必要です。
長くサービスを提供し続けるためにも、セキュリティ対策を怠らないようにしましょう。