ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(7)セキュリティ対策
ここでセキュリティ対策についてまとめて復習してみます。ネットを検索すると、さまざまな対策が紹介されています。すべてを網羅できないので、最低限だと思われる範囲でまとめてみます。
ワードプレス標準の「wp_nonce_field」
「wp_nonce_field」と「check_admin_referer」のセットはワードプレスで用意されているCSRF対策のひとつです。導入も簡単なので忘れず書いておきたい関数です。「wp_nonce_field」が form 側にセットされる関数。
<form method="post" action=""> <?php wp_nonce_field( 'name_action','my_function' ); ?>
「check_admin_referer」関数がデータを受け取る側でチェックされる関数です。
if ( !empty($_POST) && check_admin_referer( 'name_action', 'my_function' ) ) {
ネット上ではパラメータが一つのものや2つのものなど様々ですが、公式ページには次のように書かれているので2つのほうが安心できそうです。
$actionと$nameはオプションですが、セキュリティを高めたい場合はこの二つのパラメータを設定することをお勧めいたします。パラメータなしで関数を呼び出すのが簡単ですが、nonceがなんのパラメータも必要としなくなってしまうので、デフォルト値が何かをしっているクラッカーにとってあなたのnonceを推測して被害を与えるのが簡単になってしまいます。
SQLインジェクション
これはPHPで一般的な対策です。ご存知無い方は、なぜ危険なのか検索してみてください。ワードプレスの場合はprepareメソッドがこれの対策用に用意されています。
$username = $_POST['username']; $results = $wpdb->get_results($wpdb->prepare(“SELECT * FROM user WHERE uid=%s AND pwd=%s”, $username, $password ));
option テーブルを使う時に利用していた関数「update_option」はどうなのか気になる所ではありますが、情報が見つからなかったので今のところ対策無しで^^;
実行権限をチェックする
プラグインの実行・操作は管理者のみ可能となっているようにプログラムしなければなりません。底で使えるのが「is_admin()」です。特にデータを保存したり受け取る場合にはチェックすることが大切みたいです。
if ( is_admin() ) { $username = $_POST['username']; $password = $_POST['password']; $results = $wpdb->get_results($wpdb->prepare(“SELECT * FROM user WHERE uid=%s AND pwd=%s”, $username, $password ));
こんな感じで権限をチェックするように書いておくと安心です。
その他のセキュリティ対策
ディレクトリトラバーサル・HTTPヘッダーインジェクション等のキーワードが見つかります。今回は該当する部分が無さそうなのでスルーしておきます。
そして次の記事を読んで、ほとんどソースを書きなおすことになりましたw
WordPressプラグインのコーディングでありがちな10の間違いと設計時に考慮すべきこと
http://tokkono.cute.coocan.jp/blog/slow/index.php/wordpress/most-common-mistakes-in-wordpress-plugins-coding/
Sponsored Link
関連記事
-
-
WordPressのプラグインで独自のページを作る方法がわからない
Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい
-
-
WordPressのオリジナルプラグインにショートコード機能を持たせる
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る連載で、ショートコード
-
-
WordPress用プラグインで使う宿泊予約用カレンダーをPHPで書くぜ
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作るシリーズで使う、空き部
-
-
ワードプレス用宿泊予約プラグイン開発「空室情報の表示」とか
久しぶりのワードプレスネタ。全然完成しませんわ。今回は最初にブラウザのキャッシュを切る作業をしました
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(10)空室管理画面 A
さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する
ご質問は掲示板へお願いいたします。