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に結合する形だとこういった危険性があります。
対策
- バインド機構を利用する
プログラミング言語にはバインド機構が用意されているのでそちらを利用します。
バインド機構を利用することで安全にSQLを発行することができます。 - エスケープ処理を実装する
SQLにとって意味がある文字を弾くようなエスケープ処理を実装することが効果的です。
これはSQL以外にもHTML等意味がある文字を弾くことが大切なので合わせて実装しましょう。 - WAFの導入 企業でサービス展開しているのであれば当然導入しているはずです。
まとめ
当たり前ですけどいいサービス作ったところで脆弱性が発生したら全て台無しです。
特に個人情報を扱うのが当たり前になってきているのでせめてものセキュリティの知識は必要です。
【CSS】ヘッダーを固定する方法
よくWebサイトを作っているとスクロールしてもヘッダーを固定したい場合が出てくると思います。
その場合は以下のようにCSSを設定することで固定できます。
#header { position: fixed; }
上記のコードはidheader
を固定化するというコードです。
これでスクロールしてもヘッダーは固定化されます。
今回はヘッダーを例にしましたが、他にも応用できます。
例えば、右下に表示させるチャット画面とか。
以下のサイトとかは採用してますね。
【HTML】ブロック要素とインライン要素
HTMLにはブロック要素とインライン要素というのがあります。
ブロック要素
文書を構成する要素です。
例えば、<p>
、<div>
とか。
段落とか文章の塊を表すものですね。
インライン要素
上記のブロック要素の中身に対するものです。
<span>
とか<input>
が該当します。
ブロック要素よりは直感的でわかりやすいですね。
まとめ
ブロック要素、インライン要素の区別ができないとCSSを適用する際の範囲が把握できなくなるため覚えるようにしましょう。
【HTML】htmlでmarginでセンタリングする
センタリングするには色々な方法があると思いますがmargin
を利用する方法が1つ。
margin-left: auto; margin-right: auto;
これでセンタリングできます。
ただし、インライン要素には効かないので注意が必要です。
vb.netで手軽にファイルをクローズするには
using
、使いましょう。
いちいちClose
と記述する必要がなく手軽ですし何より確実にクローズしてくれます。
楽な方を使いましょう。
・・・なんでvb.netってこんなに仕様がごちゃごちゃしてるんでしょうかね