Score:1

เหตุใดเครื่องหมายอัญประกาศเดี่ยวจึงหลบหนีภายในแอตทริบิวต์องค์ประกอบการแสดงผล

ธง in

เมื่อข้อความแอตทริบิวต์มีเครื่องหมายอัญประกาศเดี่ยว เช่น "เป็นวันที่ดี" อัญประกาศเดี่ยวเมื่อแสดงผลจะถูกหลีกเป็น "วันนี้เป็นวันที่ดี" เหตุใดจึงเกิดขึ้นและสามารถป้องกันได้หรือไม่? กิ่งไม้ทำอย่างนั้นเพื่อหลบหนีหรือไม่?

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Template%21Attribute.php/class/Attribute/8.2.x

มันบอกว่า:

"คีย์แอตทริบิวต์และค่าจะถูก Escape โดยอัตโนมัติสำหรับเอาต์พุตด้วย Html::escape()"

และนอกจากนี้ยังมี:

"ค่าแอตทริบิวต์ถือเป็นข้อความธรรมดาและถือเป็นเช่นนี้ หากตรวจพบสตริง HTML ที่ปลอดภัย สตริงนั้นจะถูกแปลงเป็นข้อความธรรมดาด้วย PlainTextOutput::renderFromHtml() ก่อนที่จะถูก Escape"

ทั้งสองไม่ควรทำการแปลงนั้น

ru flag
*เหตุใดจึงเกิดขึ้นและสามารถป้องกันได้? * เนื่องจากใช้เวลาเพียง 2 วินาทีในการตรวจสอบปัญหาด้านความปลอดภัยขนาดใหญ่: `
ru flag
โดยทั่วไปใน 99 จาก 100 กรณี คำตอบของ *ทำไมมันถึงหลุดรอด* คือ *เพราะมีคนพบปัญหาด้านความปลอดภัย* ;-)
cn flag
ฉันต้องการเสื้อยืดที่มี @Hudri เป็นวลีที่ยอดเยี่ยม!
Score:0
ธง us

แอตทริบิวต์ที่สร้างขึ้นผ่าน คุณลักษณะ ชั้นเรียนจะหลบหนี

เดอะ แอตทริบิวต์::__toString() รหัสคือรหัสต่อไปนี้

$return = '';

/** @var \Drupal\Core\Template\AttributeValueBase $value */
foreach ($this->storage เป็น $name => $value) {
  $rendered = $value->render();
  ถ้า ($ แสดงผล) {
    $return .= ' ' . $แสดงผล;
  }
}
ส่งคืน $return;

ในชั้นเรียนที่ขยายออกไป AttributeValueBase, ตัวอย่างเช่น AttributeString, แสดงผล () มีรหัสต่อไปนี้

ค่า = (สตริง) $นี่;
ถ้า (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
  ส่งคืน Html::escape($this->name) '="' . $value . '"';
}

AttributeString::__toString() มีรหัสต่อไปนี้

ส่งคืน Html::escape($this->value);

Html :: หนี () ถูกเรียกสำหรับชื่อแอตทริบิวต์และค่าของมัน นั่นเป็นสาเหตุที่แอตทริบิวต์ที่สร้างขึ้นโดยใช้โค้ดที่คล้ายกับเครื่องหมายอัญประกาศเดี่ยวต่อไปนี้ภายในชื่อและค่าของแอตทริบิวต์จึงถูกหลีกหนี

$attributes = แอตทริบิวต์ใหม่ (อาร์เรย์ ());
$attributes['id'] = 'ถุงเท้า';
$attributes['style'] = 'สีพื้นหลัง:สีขาว';
echo '<แมว' . $แอตทริบิวต์ '>';

AttributeArray::__toString() ใช้รหัสต่อไปนี้

// กรองค่าว่างออกก่อนพิมพ์
$this->value = array_unique(array_filter($this->value));
ส่งคืน Html::escape(ระเบิด(' ', $this->value));

ซึ่งหมายความว่าสำหรับแอตทริบิวต์ที่สร้างขึ้นโดยใช้โค้ดที่คล้ายกับต่อไปนี้ ค่าแอตทริบิวต์จะถูกหลีก

$attributes = แอตทริบิวต์ใหม่ ();
$attributes['คลาส'] = อาร์เรย์ ();
$attributes['class'][] = 'แมว';

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา