2016-11-23 17 views
1

PHPファイルでは、何かをエコーアウトする行を探したいのですが、エコーにはHTMLが含まれていません。これの目的は、XSS保護を実装するための検索置換を行うことです。php正規表現否定lookaheadどこでも見つかりません

私のテスト文字列は次のようになります。

<?php foreach($this->userlist as $u) { ?> 
     <option value="<?php echo '<h1>'.$u['user_id'];?>" <?php echo $this->wfe->job['created_by']==$u['user_id']?'selected':'';?>><?php echo $u['real_name'];?></option> 
<?php }; ?> 

私の定期的な「ベース」という表現は、次のとおりです。

<\?php\secho\s(.*?)\?> 

私はその後、私のマッチNo1の内部で様々な否定先読み表現を挿入しようとしています:

(?!('<)) - excludes my '<h1>' tag echo successfully 

(?!(\$)) - excludes my other echo statements 

(?!^.*<[^>]+.*) - does not exclude any of my echo statements 
(?!.*<[^>]+.*) - excludes all of my echo statements 

エコーステートメントを除外するにはどうすればよいですか?

私はここで正規表現をレコーディングしました:https://regex101.com/r/hDufvl/2

+1

"XSSの保護を実装するために置き換えて検索"私は、XSS攻撃に対する検索と置換のソリューションが完全ではないことをほぼ保証することができます。 – Chris

+0

@Chrisありがとうございますが、リスクが軽減されます。自動検索/置換が完了したら、これは手動でのレビューと併用されます – jdog

答えて

0
/<\?php\s+echo\b(?:.(?!<[a-z]))*?\?>/gsi 

https://regex101.com/r/hDufvl/5

私はこれがあなたのカバレッジの誤った感覚を与えるかもしれないと思います。適切なレビューを置き換えるものはありません。

+0

私は実際にXSSを処理するためのよりよい方法を見つけましたが、私が間違ったことを学びたいと思っています – jdog

関連する問題