> It's not that difficult to write a static analyser that detects > instances of "<?=" not followed by "h(" or "e(" or whatever.
<?* and <?= are same for all applications, h() is user-defined. So you need to write a different analyzer for every application if you use h() or e(). > Surely the feature gets most of its value from what you *don't* need to > do - which is why I think it's bizarre that the current version doesn't > even have a built-in HTML escaper at all. I think it's no problem to have a follow-up rfc defining some default escapers. > It's not possible for multiple frameworks or libraries to declare > different escape handlers in your proposal, either. not sure I get your point? public function render($template) { set_escape_handler(['SomeClass', 'methodName']); ob_start(); include $template; $content = ob_get_clean(); restore_escape_handler(); return $content; } > You could equally say, "with <?=e()?> you have to define an e() > function". The main effort is remembering to use the right syntax, which > you have to do either way. the thing here is that people can use <?= without e() and save coding time. Security cannot be optional, see. git clone https://github.com/phpmyadmin/phpmyadmin.git git log | grep -i xss | wc -l 206 Regards Thomas Rowan Collins wrote on 24.07.2016 18:39: > On 24/07/2016 17:21, Thomas Bley wrote: >>> <?* $str ?> >>> >>> instead of >>> >>> <?=h($str)?> >> benefits are using static code analyzers, grep "<?=" for code reviews, etc. > > It's not that difficult to write a static analyser that detects > instances of "<?=" not followed by "h(" or "e(" or whatever. > > >> Having function names with single characters is bad taste and only useful for >> obfuscating. > > And having a token "*" that calls a different function in every > application is somehow less obfuscated? > > >> Using multiple frameworks or libraries, it's not possible to redeclare >> functions with the same name. > > It's not possible for multiple frameworks or libraries to declare > different escape handlers in your proposal, either. > > >> The big difference is: >> With <?*, you have to define an escaping function, with <?= it's optional. > > You could equally say, "with <?=e()?> you have to define an e() > function". The main effort is remembering to use the right syntax, which > you have to do either way. > > Surely the feature gets most of its value from what you *don't* need to > do - which is why I think it's bizarre that the current version doesn't > even have a built-in HTML escaper at all. > > Regards, > -- > Rowan Collins > [IMSoP] > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php