1

SQLインジェクションを防ぐための多くのドキュメントを読みました。彼らはとを使用して言っPDOmysql_real_escape_string

私はBBSコード(古いスタイル...)をプログラムし、私のBBSコードを使用している人は、次のような簡単なコードを実行します。

select * from $g4[member_table] where mb_id='$mb_id' and mb_1='$my_option'

$mb_idmysql_real_escape_string するが、$my_option多分しないでください。したがって、clean_sql()のようなphp関数を使用して$_GET、すべての変数をクリーンアップしたいと思います。$_POST$_REQUEST

clean_sql()$ my_optionの値が「1」の場合、すべてのSQLステートメントをクリアします。unionselect * from g4_member where mb_id ='admin' "

clean_sql()のような関数を教えてください。

===cleal_sqlはphp4.xで動作する必要があります。

4

1 に答える 1

3

SQLインジェクションに関するベストプラクティスは、UNIONを使用するかどうかに関係なく同じです。$_POST、、、またはその他の形式のユーザー提供データについても$_GET同じことが言えます。$_REQUESTプリペアドステートメント(PDOまたはMySQLi経由)またはを使用しmysqli_real_escape_string()ます。

もちろん、データベースに保存する前に、さらに一歩進んで、ユーザーが提供したデータを検証およびサニタイズする必要があります。のような関数は、データを検証および/またはサニタイズする簡単な方法ですfilter_var()ctype_*

于 2012-05-12T01:50:48.620 に答える