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
"XSSの保護を実装するために置き換えて検索"私は、XSS攻撃に対する検索と置換のソリューションが完全ではないことをほぼ保証することができます。 – Chris
@Chrisありがとうございますが、リスクが軽減されます。自動検索/置換が完了したら、これは手動でのレビューと併用されます – jdog