すーぱーSEへの道 -14ページ目

SQLインジェクション

先月、カカクコムOZmallで、
『DBをのっとられて利用者がウイルス感染する』
という事象の事件が立て続けに起こりました。

そこで使われているDBをのっとる方法というのが
 『SQLインジェクション』
と呼ばれる手法です。


簡単な例をひとつ。



ユーザID暗証番号を入力すると、
自分の個人情報が見れる作りのサイトがあったとします。

Webの画面から、ユーザIDと暗証番号を入れると
まずはそれらが変数に格納されます。

 ユーザID → $userid
 暗証番号 → $pass

次に、DBに対して、次のようなSQLを投げて結果を取得します。

SELECT * FROM USER_DATA
WHERE USER_ID = '$userid' and PASSWORD = '$pass'

この作りの場合、たとえば、

 ユーザID(taro)
 暗証番号(1234)

とWebで入力すると、

SELECT * FROM USER_DATA
WHERE USER_ID = 'taro' and PASSWORD = '1234'

というSQLが組み立てられて、
[ユーザーIDがtaroかつ、パスワードが1234]
で一致するデータが存在した場合に結果が表示されます。


では、ここで、

 ユーザID(taro)
 暗証番号(1234' OR '1' = '1)

と入力したらどうなるでしょう。

SELECT * FROM USER_DATA
WHERE USER_ID = 'taro' and PASSWORD = '1234' OR '1' = '1'

となって、後半のor条件が1=1で必ず真になるので、
前半のユーザIDと暗証番号の一致不一致にかかわらず
DB内に格納された全ユーザの個人情報が表示されてしまいます。





インジェクションとは、注射とか注入とかいう意味で、
開発者が作成した本来のDBへの問い合わせ文(SQL)に対して
自由に文字列を追加して、本来意図していない方法で
DBを操作することを指します。

今日、社内ネットワーク向けのWebシステムを見ていたところ、
数年前に作成された、ある照会システムが見事に
インジェクションできてしまいました(-_-;)

機会を見て、ユーザさんに報告しておこっと。。。


<参考リンク>
SQLインジェクション
警鐘●SQLインジェクションによる不正アクセスに注意
【続報】OZmallへの不正アクセスの手口は「SQLインジェクション」

簡潔な説明の究極例

『だらだら説明せずに、要点だけを伝えるのが大事』という
昨日の内容を書いてて思い出したのが高橋メソッドです。

要点をまとめて、簡潔に説明するという意味で、
これ以上シンプルなものは無いと思います。

詳しくはこちら↓で見てみましょう。

http://www.rubycolor.org/takahashi/


まじめな内容を説明しててもなんだか笑えてくるので、
新人受けもよさそうだし、皆さんもぜひ覚えて使ってみましょう。

普通の研修に飽きた人とか、固い雰囲気の
プレゼンを打破したい人にオススメの手法です。

最初にどこまで話すべきか

うちの開発部門に新人くん2名が入りました。
といっても、当社の社員ではなく客先の社員さんです。

ここ数年、新卒を採用していなかったということもあり、
客先の会社の社員さんたちもなんだか嬉しそうです。


早速、昨日から教育をやっているようですが、
教える方が張り切りすぎているような気がするので
教わる側がついていけるのかどうかちょっと心配。。。

一日の間に、

 担当者AからAシステムの概要(2時間)

 担当者BからBシステムの概要(1時間)

 担当者CからCシステムの概要(2時間)

のような感じで担当者別にレクチャーが入ってます。

担当者は自分の担当システムのことを丁寧に教えます。
新人君も『ふむふむφ(..)』と聞いてます。

でも、はたしてどれくらい理解できてるんだろう。。。


業務全体を見渡して把握してもらうという意味で、
すべてのシステムの概要を話すのはいいと思うんですけど、
1時間とか2時間とか説明されると、逆に大事な部分が
見えなくなってしまいそうです。

そういう意味では、30分くらいでシステムの柱
ポイントだけ簡潔に話して、雰囲気を理解してもらう方が
いい様な気がするんですよね。。。

まぁ他社の新人教育なので口は出せませんけど(^-^;)


すくすく育って、早くチームでいっしょに仕事が
できるようになるといいなと思います。

このブログを読んでる新人さんたちも頑張ってください。

給料にビックリ。

うちの会社は25日が給料日です。

先週の24日(火曜日)の定時後に給与明細が
配られたのですが、その時に事件は起こりました。

隣の先輩が、

 『あれ?残業代が入ってない!』

と言い出したのです。


急いで自分の明細を見るitpro。

確かに給料は少ないですけど、それはいつものことで、
残業代はきちんと計上されていました。

どうやら、先輩の給料だけ残業代が抜かれているようです。


今期から社内の職制変更があり、
その先輩は新しい職制に変更になった矢先だったので、

『もしかして、今度の役職は残業代無いんじゃないですか?』

と、みんなで話していました。


別の先輩にも確認したところ、その先輩も残業代が
含まれていないとのこと。

これでますます『残業代カット』が濃厚になってきました(-_-;)

そんな話は事前にまったく無かったので、
普段は温厚な先輩も、さすがにちょっとお怒りの様子。


見かねた課長が慌てて本社に問い合わせると

『まちがえちゃった♪(by 本社総務部)』

とのこと。

職制変更による給与計算の設定にミスがあったらしく、
先輩の役職についての残業代計上が漏れていたそうです。


曲がりなりにもIT関連企業だというのに、
自社の社員の給与計算もミスっているようでは
ちょっと先が思いやられます(-_-;)

もしかして、私の給料が安いのも、恒常的に計算ミスを
しているのではないかと思ってしまいました(笑)

この業界で残業代ナシって言われたら、
相当きつい気がするんですけど。。。
(年俸制でいいお給料もらってる人は除く)

まぁなんにせよ、間違いでよかった。

すーぱーSE.jp開設

最近ブログの更新が滞っててすみません。

面倒になってサボっているというわけではなく
ここのところ別の作業をしていたので更新ができませんでした。


理由はコレです(↓)

http://superse.jp/


そうです、ドメインをとってみたのです(^-^)丿

それの手続きとか準備とか設定に時間がかかったので、

ブログが後回しになってしまってたのです。。。


とりあえず、当ブログの過去ログIT関連サイトのRSSフィード

メインになるかと思いますが、まだ作成途中なので補足先の

ブログなどは随時更新・追加していきます。

自分が昼休みに情報チェックするため、というのがいちばんの
作成意図ですので、手軽に情報を仕入れられるサイトに
していくつもりです。



そんな中、最近勉強しているAjax製のamazon検索機能を
Web解説サイトなどを参考に搭載してみました。

検索条件を入れると動的にHTMLを書き換え
検索結果を画面に表示するようになってます。


Ajaxを用いたamazon商品検索
http://superse.jp/amajax.php

テキトーに条件を入力してもらえば使い方はわかるかな。
あとは画像をクリックしていくとご希望の商品にたどり着けます。

最近Ajaxが流行ってますけど、たしかに使い方によっては
面白いことがデキそうですね。

送信ボタンなどを押さず、画面をリフレッシュせずに
書き換えられるのはなかなか新鮮です。