SQLインジェクション

システムで想定外のSQLコマンドを実行する攻撃手法

例えば、変数whereに適切な条件が設定されることを想定して

statement = "SELECT * FROM table WHERE " + where + " ;"
db.execute(statement)

のようなスクリプトを作ったとします。

ここで、where

where = "name; DROP TABLE table;"

のような値が入っていた場合に、次のようなコマンドが実行されることになり、セキュリティ上のリスクとなるようです。

SELECT * FROM table WHERE name;
DROP TABLE table;

この手法は、入力(今の場合は変数where)を適切にエスケープすることで回避可能なようです。

Python

PythonでSQLiteを使う場合は、文字列操作でSQLコマンドを作らないで、次のようにした方が良いそうです。

db.execute("SELECT * FROM table WHERE name=?", (name,))

Gitのユーザー名とメールアドレスを設定

Gitのユーザー名とメールアドレスを設定するコマンド

リポジトリ内で

$ git config user.name "yourname"
$ git config user.email "[email protected]"

全体で

$ git config --global user.name "yourname"
$ git config --global user.email "[email protected]"

設定内容の確認

$ git config user.name
yourname

$ git config user.email
[email protected]