ペンション・民宿・プチホテル用 宿泊予約 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
関連記事
-
-
ワードプレス用宿泊予約プラグイン開発「空室カレンダー表示」
前回ネットで検索して見つけた calendar($year = "", $month = "") 関
-
-
新バーチャル歌姫デビュー CeVIO Creative Studio は期待して良さそう
既にサンプル曲がガンガンアップされています。噂の歌声合成ソフト CeVIO Creative Stu
-
-
WordPressのプラグインで独自のページを作る方法がわからない
Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(8)セキュリティ対策
前回紹介したホームページを参考にソースを書き換えてみました。特に標準の option テーブルにレコ
-
-
WordPressのプラグイン開発を効率的にするフレームワークたち
Wordpressでプラグインを作っていて「フレームワーク使えないのかな?」と疑問を持ちました。そこ
ご質問は掲示板へお願いいたします。