回る男の備忘録

どこかでプログラム書いてシャニマスして野球見てTwitterやってる人間の駄文

SQLインジェクション、知ってますか?

エンジニアの皆さんは知ってますよね?
私はSQLインジェクション対策されていない現場で開発していました。

SQLインジェクションとは

wikipediaから引用

SQLインジェクション(英: SQL Injection)とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。また、その攻撃を可能とする脆弱性のことである。

ざっくり言えばSQLに変な文字列を突っ込んで想定外のSQLを実行させる方法です。

以下のSQLを例に見ていきましょう。

SELECT * FROM customer WHERE name = '入力値';

customerテーブルからデータを取得するSQLです。
条件として'name'に一致するものを取得するという形になっています。
一見するとごく普通のSQLですが、このままアプリケーションに導入すると大変。
SQLインジェクションの温床です。

SQLインジェクションを発生させる

例えば、Webアプリケーションからの入力値をnameに設定するとしましょう。
そのときの入力値は以下とします。

a' OR 'a' = 'a

これをSQLに結合します。

SELECT * FROM customer WHERE name = 'a' OR 'a' = 'a'

これ、ORの右側で'a'='a'が一致してるのでcustomerテーブルのレコードが抽出できます。
直接入力値をSQLに結合する形だとこういった危険性があります。

対策

  1. バインド機構を利用する
    プログラミング言語にはバインド機構が用意されているのでそちらを利用します。
    バインド機構を利用することで安全にSQLを発行することができます。
  2. エスケープ処理を実装する SQLにとって意味がある文字を弾くようなエスケープ処理を実装することが効果的です。
    これはSQL以外にもHTML等意味がある文字を弾くことが大切なので合わせて実装しましょう。
  3. WAFの導入 企業でサービス展開しているのであれば当然導入しているはずです。

まとめ

当たり前ですけどいいサービス作ったところで脆弱性が発生したら全て台無しです。
特に個人情報を扱うのが当たり前になってきているのでせめてものセキュリティの知識は必要です。

【CSS】ヘッダーを固定する方法

よくWebサイトを作っているとスクロールしてもヘッダーを固定したい場合が出てくると思います。
その場合は以下のようにCSSを設定することで固定できます。

#header {
  position: fixed;
}

上記のコードはidheaderを固定化するというコードです。
これでスクロールしてもヘッダーは固定化されます。

今回はヘッダーを例にしましたが、他にも応用できます。
例えば、右下に表示させるチャット画面とか。
以下のサイトとかは採用してますね。

techacademy.jp

【CSS】画像のアスペクト比を固定する方法

やり方は非常に簡単

img {
  width: 100%;
  height: auto;
}

上記はimgに対し設定しましたが自身で設定したセレクタで何も問題ないと思います。

また、width: 100%としましたが幅は自由に設定して問題ありません。
height: autoにすることでアスペクト比が固定されます。
結構使うことが多いです。

【CSS】max-width、min-widthの使い道

要素の最大値、最小値を表します。

max-width最大値min-width最小値を表します

使い道

スマホとPCとでサイズを変更するときに有効です。
画像サイズとかスマホとPCでサイズを変えたい場合って出てくると思います。

画像のmax-width100%に設定、あとはスマホとPCとで画像のwidthを適切な値にすることで
サイズ変更することが出来ます。

【HTML】ブロック要素とインライン要素

HTMLにはブロック要素インライン要素というのがあります。

ブロック要素

文書を構成する要素です。

例えば、<p><div>とか。

段落とか文章の塊を表すものですね。

インライン要素

上記のブロック要素の中身に対するものです。
<span>とか<input>が該当します。

ブロック要素よりは直感的でわかりやすいですね。

まとめ

ブロック要素、インライン要素の区別ができないとCSSを適用する際の範囲が把握できなくなるため覚えるようにしましょう。

【HTML】htmlでmarginでセンタリングする

センタリングするには色々な方法があると思いますがmarginを利用する方法が1つ。

margin-left: auto;
margin-right: auto;

これでセンタリングできます。
ただし、インライン要素には効かないので注意が必要です。

vb.netで手軽にファイルをクローズするには

using、使いましょう。

いちいちCloseと記述する必要がなく手軽ですし何より確実にクローズしてくれます。
楽な方を使いましょう。

・・・なんでvb.netってこんなに仕様がごちゃごちゃしてるんでしょうかね