ฉันเพิ่งเจอแท็ก PHP <?= ?>
นี้เมื่อเร็ว ๆ นี้และฉันลังเลที่จะใช้ แต่มันก็ยากที่ฉันต้องการให้คุณทำ ฉันรู้ว่ามันคือการปฏิบัติที่ดีที่จะใช้แท็กสั้น<? ?>
และว่าเราควรจะใช้แท็กเต็มรูปแบบ<?php ?>
แทน แต่สิ่งที่เกี่ยวกับเรื่องนี้อย่างใดอย่างหนึ่ง: <?= ?>
?
มันจะประหยัดการพิมพ์บางส่วนและมันจะดีกว่าสำหรับการอ่านรหัส IMO ดังนั้นแทนที่จะเป็นเช่นนี้:
<input name="someVar" value="<?php echo $someVar; ?>">
ฉันสามารถเขียนแบบนี้ได้ซึ่งสะอาดกว่า:
<input name="someVar" value="<?= $someVar ?>">
การใช้โอเปอเรเตอร์นี้ขมวดคิ้วอยู่หรือไม่?
echo
นำไปสู่ XSS ได้ง่ายมากและคุณควรพึ่งพาวิธีการสะท้อนบริบทโดยเฉพาะ (เช่น: มีfunction html($x) { echo htmlentities($x,...); }
และยกเลิกhtml($someVar);
แทนที่จะecho $someVar
ใช้หรือใช้echo json_encode($x);
สำหรับบริบท JS) สิ่งนี้ทำให้<?=
แท็กเป็นแนวปฏิบัติที่ไม่ดีเพราะนั่นหมายความว่าคุณมีเนื้อหาตัวแปร HTML ที่ใช้ Escape ในที่อื่นและเพื่อให้สถานที่อื่น ๆ ต้องรู้ว่าตัวแปรนี้ต้องใช้ HTML อย่างน่าอัศจรรย์เพราะมันดังก้องในบริบท HTML