セキュリティ知識で差をつけるITエンジニアの転職【現役エンジニアが解説】

PROGRAM

ITエンジニアの転職はセキュリティ知識で差をつけることができる理由を知りたい方に。

この記事を読まれている方は、

  • ITエンジニアの転職はセキュリティ知識で差をつけることができる理由を知りたい
  • 具体的なセキュリティリスクを知りたい
  • セキュリティについて学ぶ方法を知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、ITエンジニアの転職はセキュリティ知識で差をつけることができる理由と具体的なセキュリティリスクを解説し、セキュリティについて学ぶ方法を解説しています。

ITエンジニアの転職はセキュリティ知識で差をつけることができる理由

ITエンジニアの転職はセキュリティ知識で差をつけることができる理由

ITエンジニアの転職においては、セキュリティ知識でライバルに差をつけることができます。
また、セキュリティ知識があることで、セキュリティエンジニアとして転職できる可能性もあります。
まずは、ITエンジニアの転職はセキュリティ知識で差をつけることができる理由を解説していきます。

開発時にセキュリティ対策は必須

まず、大前提として、実際の開発現場でセキュリティ対策を全く行っていないところはありません。

エンジニアの方々は日頃からデバッグという作業に多くの時間をかけていると思いますが、それだけセキュリティ攻撃の温床がたくさんあるということなのです。

また、バグ以外にも、デフォルト設定のまま何も対策をしないことで、その性質を利用され、データベースを操作されたり、ファイルを破壊されたりする可能性さえもあります。

つまり、エンジニアは、そういったセキュリティリスクを一通り理解したうえで、それぞれのリスクに対し対策を講じる必要があるというわけです。

Web系アプリは特にリスクだらけ

Web系アプリケーションは、Web系でないアプリケーションと比べると、特にセキュリティリスクが多いので、Web系のエンジニアに転職される方はセキュリティに関する一通りの知識はあった方が良いです。

イントラのWeb系アプリもありますが、基本的にはWeb系アプリはインターネットで不特定多数がアクセス可能なアプリとなるので、悪意のある攻撃を受ける可能性がとても高いです。

もちろん悪意のある攻撃だけでなく、そのつもりはなかったがセキュリティ対策をしていなかったがために引き起こされる問題もあります。

Web系アプリの開発では、検証工程で脆弱性テストを行う企業が多いため、Web系エンジニア志望でセキュリティ知識がないとなれば、ライバルから距離をつけられてしまう可能性があります。

問題が発生すれば一発倒産リスク

セキュリティの脆弱性があると、そこがセキュリティホールとなり、個人情報が流出したり、Webサービスが提供できなくなる恐れがあります。

実際にそういう問題が起これば、資本力の少ない中小企業では被害者に対して補償ができずに一発で倒産してしまうきっかけにもなりかねません。

過去にもベネッセなどが個人情報を流出させて、一人あたり500円の補償を行い計200億円の特別損失を計上したことがあります。

この金額の大きさを見れば、セキュリティ対策を怠る理由はどこにもないですよね。

具体的なセキュリティリスク

具体的なセキュリティリスク

次に、具体的なセキュリティリスクについても触れておきたいと思います。
ここでは不特定多数からの悪意を持ったアクセスが考えられるWeb系アプリの場合を想定しています。

XSS

XSSはクロスサイトスクリプティングの略称です。

XSSはユーザ側で入力したパラメータがWebページ内に反映されるようなページで、悪意のある攻撃者が予め意図したパラメータが設定されるように、仕掛けることです。

通常はメールやWebサイトのリンクで仕掛けられることが多く、アクセスしたページも本物のサイトのため、利用者は気がつかないことが多いです。

例えば、予めある程度必要となる情報が埋まっているフォームのページなどを見かけたことがあると思います。

このようなページではユーザ側で指定したパラメータを埋めるようにしていることも多く、この場合、悪意のある攻撃者が既存のフォーム構成を書き換えることができてしまう恐れがあります。

ほとんどのサイトが対策をしているのですが、この脆弱性によって例えば、本物のサイトに対して送信したはずのデータが実は別の偽サイトに送信され、個人情報が流出してしまったなどのセキュリティ問題が生じる可能性があります。

CSRF

CSRFはクロスサイトリクエストフォージェリの略称です。

具体的には偽サイトなど、悪意のある攻撃者のサイト上でフォームやフレームなどを利用して、利用者が意図しないフォームデータを送信させる手口です。

フレームの中で行われるケースも多いですが、フレームでなくても、リンクを押すように誘導させることでも悪用される、代表的なリスクの一つです。

これは通常セッションが維持されている場合に悪用されるケースが多いです。

例えば、利用者が、ある会員制のサイトにログインしたとします。

攻撃者は自分のサイト上で、この会員サイトのパスワード変更URLに対し、自分が指定するパスワードを新しいパスワードとして送信するように細工したリンクを設けます。

利用者がそのリンクを押してしまうと、攻撃者が指定したパスワードに置き換わってしまうため、アカウントが乗っ取られてしまいます。

これも有名なリスクのため、対策しているところがほとんどですが、個人や小さな企業が作成したWebサイトなどでは対策をされていないケースも多いです。

SQLインジェクション

SQLインジェクションはその名のとおり、悪意を持った攻撃者が、ターゲットのサイトでSQL文を新たに挿入し、サーバ側に処理を実行させるというものです。

XSSやCSRFは悪意を持った攻撃者はあくまで第三者としての立場でしたが、SQLインジェクションでは攻撃者自らがサーバに対し攻撃を行います。

例えば、商品コードを入力する欄と検索ボタンが並んでいるシンプルな商品検索機能のあるショッピングサイトを想像してみて下さい。

この場合、通常サーバ側のSQL文としては「SELECT * FROM 商品マスタ 商品CD = 検索で指定された商品CD」というようなシンプルな作りになっていると思いますが、悪意のある攻撃者はこの商品コードの欄を細工します。

例えば、入力欄に「100; DELETE FROM 商品マスタ」などと入力して、サーバ側で実行されるSQL文を「SELECT * FROM 商品マスタ 商品CD = 100; DELETE FROM 商品マスタ;」に変えてしまうといったものです。

これによって、一つ目のSELECT文はサーバ側が最初から想定している動作となりますが、二つ目のDELETE文によってマスタの中身が全て消されてしまうことになります。

これは恐ろしいですよね。

もしログイン画面にこうした脆弱性があれば会員データが消えてしまうことになりますし、攻撃者の良いように会員情報が書き換えられてしまう恐れもあります。

このSQLインジェクションについてはWeb系だけのリスクではないため、全てのエンジニアが必ず知っておくべきリスクになります。

セキュリティについて学ぶ方法

セキュリティについて学ぶ方法

ITエンジニアの転職では、セキュリティに関する知識や経験があると、より実践的スキルがあるとみなされ、有利になることを説明してきました。
最後に、セキュリティについて学ぶ方法をまとめています。

プログラミングで学ぶ

具体的に手を動かしながら、セキュリティについて学ばれると覚えやすいと思います。

例えば、以下のような書籍がありますので、これを参考にしつつサンプルのソースコードを実際に書いてみて、動作を確認されると各セキュリティリスクの内容とその対策が頭に入ってきやすいと思います。

他にもセキュリティについて解説された本はありますが、本だけを読んでもすぐに忘れてしまうことが多いので、この参考書のように書いて覚えていくことを前提にしているものの方が記憶に残りやすいと思います。

この本に書かれていることは網羅性が高いと思いますし、この記事で解説したセキュリティリスクも当然含まれています。

実務の検証工程で学ぶ

実際の現場では、Web系アプリケーション開発の場合、ほぼ必ず検証工程で脆弱性テストというものを行っているはずです。

そのため、現在Web系の開発を行っている企業に勤めている方であれば、実務の中で覚えることができます。

また、セキュリティエンジニアになりたい方も、まずはこういったWeb系の開発を行う企業でセキュリティ対策の経験値を積むことをおすすめします。

セキュリティ知識を身につけるには、実際にセキュリティリスクに多くさらされているところに行くことが一番の近道だからです。

派遣エンジニアでは思ったような工程を担当させてもらえないので、SES案件を排除しつつモダンなWeb系企業を探すにはエージェントを利用されると良いと思います。

スクールを利用し学ぶ

プログラミングスクールや学校等でセキュリティに関する知識を身につけるという方法でも良いと思います。

現在未経験などの理由で実務を経験することができない場合には、現役のエンジニアの多いスクールなどで、実践的なセキュリティ対策やノウハウを学ぶことをおすすめします。

未経験の場合、たいていWeb系エンジニアコースで学習をすれば、セキュリティ対策も一緒に学ぶことができると思いますので、別々に学ぶ必要はないと思います。