ユーザーがMySQLステートメントを使用してレポートを作成できるモジュールがあります。SELECTステートメントのみを使用する必要があります。で確認しstrpos("", $sSelect)
ます。DROP, Replace, DELETE, TRUNCATE, ALTER,... etc.
解決策はありますか、他のすべての危険なステートメント(など)の文字列を確認する方法はありますか?SELECTのみが許可されます。
グリーツ
レポートを作成する人のMySQLユーザー権限を変更することは可能ですか?もしそうなら、あなたはすべてのバーSELECTへのアクセスを制限することができますか?レポートを作成するときにこのユーザータイプとして接続し、それ以外は通常のユーザーアカウントに接続する必要があります。
正規表現を使用できます。
if (!preg_match('#^SELECT .*#i', ltrim($your_string))) {
// not allowed...
}
文字列がSELECTステートメントで始まらない場合(大文字と小文字は区別されません)、何かを実行します...
ただし、これは最善の方法ではありません。ユーザーのアクセス許可を制限することを検討する必要があります。このアプローチに加えて、「悪者」は次のように別のコマンドを実行する可能性があります。SELECT ...; DROP TABLE ...;