見出し画像

未経験の大学生が3か月独学でエンジニアインターンを獲得する現実的な方法⑦


こんにちは!


オンラインプログラミングスクールのクリプテックです。


このシリーズでは、「未経験の大学生が3か月独学でエンジニアインターンを獲得する現実的な方法」を配信しています。


記事を見て、翌週までに記事に即した学習をこなせば開発スキルを付けることができます。


3か月続けることができればエンジニアインターンやエンジニアバイトを獲得したり、オリジナルサービスを開発することも可能です。


【具体的な流れ】

⓪本シリーズの概要と独学のススメ

1ヶ月目

①HTML,CSSの基本コーディング …Progate

②環境構築(クラウド/ローカル) …PHPの教科書Chapter2

③PHP入門…Chapter3

④Git,CommandLine基本操作 …Progate

2ヶ月目

⑤MySQL入門(データベース)…Chapter4

⑥PHP+MySQL…Chapter5

⑦PHP+MySQL…Chapter5

⑧Twitter風掲示板作成…Chapter6

3ヶ月目

⑨Twitter風掲示板作成…Chapter6

⑩オリジナルサービス開発

⑪オリジナルサービス開発                      
⑫オリジナルサービス本番公開

インターン面接


今回は7回目になります!


前回は、「PHP+MySQL」の前半をやってもらいました。

量は多くありませんが、なかなか苦労したのではないでしょうか?

データベースとアプリケーションを繋げるときのPDOの意味が分からないとか

prepareメソッドでサニタイズ(入力データの無害化)する必要性が感じられないとか

execって何を表しているんだ?とか

色々と疑問がわいたかも知れませんが、とりあえず前に進みましょう。

学習していくうちにだんだんと明らかになっていくはずです。


今回はその続きをやってもらいます。

「PHP+MySQL」の後半です!


まずは補足説明をしたいと思います。今やっているアプリケーション作成に関連したセキュリティの話をします。



セキュリティについて



教科書でprepareを使って「値をエスケープする」(教科書p.209)ということを学んだかと思います。

また少し前にhtmlspecialcharsというメソッドも学んだと思います。

これらはアプリケーションのセキュリティを確保するための重要な機能です。


直感的に重要性を理解してもらうために簡単な攻撃手法の例を見ていただきます。


Userというデータベースのテーブルがあって、そこにはユーザ名とパスワードという値があります。

それらを使ってログイン機能を作ったとします。

ユーザ名に「Hacker」 , パスワードに「aaa' or '1' = '1」と入力します。

もしセキュリティ対策を全くしていないログインフォームだと以下のようなSQL文が生成されてしまう可能性があります。

SELECT * FROM User WHERE user_name = 'Hacker' AND password = 'aaa' or '1' = '1'

これの危険さに気づくでしょうか?

where句の最後に「or '1' = '1'」という条件が追加されます。これでは常に条件に当てはまることになるので、結果的にすべての記録が取得できてしまいます。


今は簡単に入力チェックがおこなえたり、フレームワークで入力チェックが標準装備されていたりするので、さすがにこのような攻撃が通用することはないかと思います。

しかし、想定できないような巧妙な攻撃方法があることは分かっていただけたのではないでしょうか?


このような攻撃に対しては、prepareなどを使った「プリペアードステートメント」や、htmlspecialcharsなどの「入力値チェック」が有効です。


攻撃手段はほかにもあります。


「セッションハイジャック」というものも紹介しておきましょう。


WebアプリケーションではCookieやGETリクエストを使用してユーザのログイン情報などが保持されています。

それらの情報はセッションIDによってサーバから取り出されています。

このセッションIDが何らかの方法で第三者によって盗まれると、第三者がそれに紐づけられたユーザに成りすますことができてしまいます。

Webアプリによってはクレジットカード情報なども含まれるため対策が必要です。


セッション情報は基本的にはブラウザが閉じられるたびに破棄されます。

が、ブラウザが開きっぱなしでも一定時間操作がないとセッションを破棄して再ログインを求めるというセッションタイムアウトという機能もあります。

そのセッションタイムアウトの値を短くすることはセッションハイジャックに対する一つの対策です。

通信の過程でデータが盗まれないようにするために、SSLによって通信経路を暗号化することも有効な対策です。

他にも、セッションIDをランダムにするなどの対策もあります。


攻撃手法に関してもまだまだこれだけではありません。日々新しいものが生まれています。



便利なツールを最大限活用しながら、セキュリティに関する知識も少しづつつけていきましょう!


ということで、補足説明は以上になります。


では、今回は「よくわかるPHPの教科書」、Chapter5の後半をやってみてください!


初めてアプリケーションを完成させるという大変めでたい体験になるかと思いますので、是非楽しんでください。


わからないところは、気軽にTwitterのDMにメッセージ下さい!どんなに些細なことでもよいです。学生エンジニアになりたいんですけど、、、副業したいんですけど、、、など、相談でもオッケーです。


クリプテックでは学生に限らず、プログラミングを勉強しててわからないところをまとめて聞ける無料のレッスンを行っています。申し込みは☟のリンクから。


ではまた!

この記事が気に入ったらサポートをしてみませんか?