1
在一个php文件中,我想找到所有回显某些内容的行,但是echo不包含任何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(.*?)\?>
我已经然后试图插入我的比赛一号内的各种负先行表达式:
(?!('<)) - 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
我该如何排除我的echo声明包括?
我已经记录了正则表达式在这里:https://regex101.com/r/hDufvl/2
“搜索替换来实现XSS保护”我几乎可以保证任何搜索和替换解决方案的XSS攻击都不会完成。 – Chris
@Chris谢谢,但它会降低风险。这将结合手动审查,一旦自动搜索/替换完成 – jdog