独学でwordpressのプラグインの作成、勉強をしています。
データベースの内容を読み込んで利用するときに
例として以下のようにしています。
データベースにアクセスしてるのは複数ありますが、
主にはselectとupdateで以下の2つような形を使いまわしております。
global $wpdb; $result = $wpdb->get_results( "SELECT * FROM wp_posts ORDER BY post_date ASC" ); foreach ($result as $value){ //もろもろ処理が入ってます。 } //特定のidの記事のデータ一部を更新してます。 $post_id = $value->ID; $wpdb->update($wpdb->posts, array( 'カラム名1' => 値1, 'カラム名2' => 値2 ), array( 'ID' => $post_id ) );
特にエラーなどもなく、作成したプラグイン自体は正常に動作はしているのですが、
wordpress.orgの公式にプラグインをアップの申請をした際に、
wordpress.orgからの返答で、以下のような内容が英語できました。
(申し訳ないですが英語ができないため、返答をgoogle翻訳した結果になります。)
「##安全でないSQLコール
データベース呼び出しを行うときには、SQLインジェクションの脆弱性からコードを保護するために非常に重要です。あなたはそれらを保護するためのクエリで()の準備使用するようにコードを更新する必要があります。
」
いっしょに、参考のURLも記載されていたのですが、リンク先がいずれも英語のため、
よく理解できずじまいの状態です。
原文は以下です。
引用テキスト
Unsafe SQL calls
When making database calls, it's highly important to protect > your code from SQL injection vulnerabilities. You need to > > update your code to use prepare() with your queries to protect > them.
Please review the following:
- http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries> _Against_SQL_Injection_Attacks
- http://codex.wordpress.org/Data_Validation#Database
- http://make.wordpress.org/core/2012/12/12/php-warning-> missing-argument-2-for-wpdb-prepare/
- http://ottopress.com/2013/better-know-a-vulnerability-sql-> injection/
セキュリティ的な問題があるということはなんとなくわかったのですが、
結果的にどのような形にしたら良いのかアドバイス、ヒント等ご教授いただければ幸いです。
よろしくお願いいたします。
追記:情報が不足していてすみませんでした。
回答1件
あなたの回答
tips
プレビュー