JavaScriptインジェクション対策
1 2 3 4 |
// JavaScriptインジェクション対策1(http経由のみアクセス可能にする) ini_set('session.cookie_httponly', 1); // JavaScriptインジェクション対策2(不正なセッションIDを拒否) ini_set('session.user_strict_mode', 1); |
在宅プログラマーの備忘録として2005年に始めたブログです。
JavaScriptインジェクション対策
1 2 3 4 |
// JavaScriptインジェクション対策1(http経由のみアクセス可能にする) ini_set('session.cookie_httponly', 1); // JavaScriptインジェクション対策2(不正なセッションIDを拒否) ini_set('session.user_strict_mode', 1); |
ブラウザで動作するWEBシステムで、
使用しているプログラムをcronから呼んだらうまくいかない、
WEBアクセスしたときと結果が違う、
ということはないでしょうか。
cronからPHPをコマンドで実行した場合、
環境変数などの実行環境がWEBとは異なるため
全く同じ動作を行う保証がなく、予測しにくい不具合を生みます。
そこで私は、バッチ処理などでcronからphpを呼ぶ場合は
wgetを使っています。
こんな感じでwgetを呼ぶシェルをcronにセットするだけです。
batch.sh
1 2 3 |
url=https://example.com/test/test1.php?param1=AAA log=/tmp/test1.log wget -q --no-check-certificate ${url} -O ${log} |
これでWEBアクセスと同じ動作を行わせることができます。
重複実行防止処理はphp側で行っています。
もし時間のかかる処理ならwgetのオプションにタイムアウトの指定をします。
1 |
wget --read-timeout=3600 -q --no-check-certificate ${url} -O ${log} |
連想配列を1データとする配列を任意の項目でソートしたい場合
データの例
1 2 3 4 5 |
$list = [ {'name': '佐藤', 'age': 35, 'gender': 1}, {'name': '鈴木', 'age': 25, 'gender': 2}, {'name': '田中', 'age': 45, 'gender': 1}, ]; |
年齢で昇順でソート
1 2 3 4 5 |
$sort = []; foreach($list as $row) { $sort[] = $row['age']; } array_multisort($sort, SORT_ASC, SORT_NUMERIC , $list); |
名前+性別の降順でソート
1 2 3 4 5 |
$sort = []; foreach($list as $row) { $sort[] = $row['name'] . $row['gender']; } array_multisort($sort, SORT_DESC, SORT_STRING , $list); |
5年前に書いた記事
の内容がPHP7.1では非推奨になってしまったようなので
OpenSSLを使う新しい方法で暗号化・復号化をしてみました。
特にインストールが必要なものはありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class crypt { public $enc_algo = 'AES-128-CBC'; // アルゴリズム(ここではAES 128bit CBCモード) public $enc_key = 'TokyoKumoNiNotte'; // 暗号キー(文字数はアルゴリズムによる) /* 暗号化 */ public function encrypt($value) { $enc= openssl_encrypt($data, $this->enc_algo, $this->enc_key, OPENSSL_RAW_DATA, $this->enc_key); return base64_encode($enc); } /* 復号化 */ public function decrypt($value) { $dec = base64_decode($value); $desrpted = openssl_decrypt($dec, $this->enc_algo, $this->enc_key, OPENSSL_RAW_DATA, $this->enc_key); return $desrpted; } } |
たとえばインストールされているPHPモジュールの一覧は
1 |
yum list installed | grep php |