-2

ユーザーがMySQLステートメントを使用してレポートを作成できるモジュールがあります。SELECTステートメントのみを使用する必要があります。で確認しstrpos("", $sSelect)ます。DROP, Replace, DELETE, TRUNCATE, ALTER,... etc.解決策はありますか、他のすべての危険なステートメント(など)の文字列を確認する方法はありますか?SELECTのみが許可されます。

グリーツ

4

2 に答える 2

2

レポートを作成する人のMySQLユーザー権限を変更することは可能ですか?もしそうなら、あなたはすべてのバーSELECTへのアクセスを制限することができますか?レポートを作成するときにこのユーザータイプとして接続し、それ以外は通常のユーザーアカウントに接続する必要があります。

于 2012-10-24T15:23:31.167 に答える
0

正規表現を使用できます。

if (!preg_match('#^SELECT .*#i', ltrim($your_string))) {
    // not allowed...
}

文字列がSELECTステートメントで始まらない場合(大文字と小文字は区別されません)、何かを実行します...

ただし、これは最善の方法ではありません。ユーザーのアクセス許可を制限することを検討する必要があります。このアプローチに加えて、「悪者」は次のように別のコマンドを実行する可能性があります。SELECT ...; DROP TABLE ...;

于 2012-10-24T15:23:12.480 に答える