> The big difference is:
> With <?*, you have to define an escaping function, with <?= it's optional.

a few minutes ago, security updates for CVE-2016-2040 were published:

https://github.com/phpmyadmin/phpmyadmin/commit/edffb52884b09562490081c3b8666ef46c296418
https://github.com/phpmyadmin/phpmyadmin/commit/75a55824012406a08c4debf5ddb7ae41c32a7dbc
https://github.com/phpmyadmin/phpmyadmin/commit/aca42efa01917cc0fe8cfdb2927a6399ca1742f2

Regards
Thomas


Thomas Bley wrote on 24.07.2016 18:21:

>>  <?* $str ?>
>> 
>> instead of
>> 
>>  <?=h($str)?>
> 
> benefits are using static code analyzers, grep "<?=" for code reviews, etc.
> Having function names with single characters is bad taste and only useful for
> obfuscating.
> Using multiple frameworks or libraries, it's not possible to redeclare
> functions with the same name.
> 
> The big difference is:
> With <?*, you have to define an escaping function, with <?= it's optional.
> 
> Regards
> Thomas
> 
> 
> Christoph Becker wrote on 24.07.2016 17:54:
> 
>> On 24.07.2016 at 16:55, Thomas Bley wrote:
>> 
>>> In total a good rfc everybody should be happy with.
>> 
>> I'm not happy (to put it mildly) with the RFC as it's now.  The RFC
>> speaks of *operator*, where actually start-tags[1] are meant, to start
>> with.  Using the word operator is rather confusing in this context.
>> 
>> Then the RFC states that the new operator is compiled into the following
>> AST:
>> 
>> | echo escape_handler_call(first_argument, second_argument);
>> 
>> But what happens to additional code, e.g.
>> 
>>  <?* $str, 'html', 42 ?>
>>  <?* $str, 'html'; echo 42 ?>
>> 
>> Contrast that to the language specification which explains:
>> 
>> | If <?= is used as the start-tag, the Engine proceeds as if the
>> | statement-list started with echo statement.
>> 
>> Simple, yet precise.
>> 
>> Anyhow, even if this formal issues will be addressed, I still don't see
>> the benefit of being able to write
>> 
>>  <?* $str ?>
>> 
>> instead of
>> 
>>  <?=h($str)?>
>> 
>> The argument that h() might be forgotten is moot, because it's similarly
>> easy to accidently write = instead of *, and both forms allow for
>> equally well (semi-)automatic verification that all output is escaped.
>> 
>> [1]
>> <https://github.com/php/php-langspec/blob/master/spec/04-basic-concepts.md#program-structure>
>> 
>> -- 
>> Christoph M. Becker
>> 
>> -- 
>> 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
> 


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to