Điểm:1

Tại sao dấu nháy đơn thoát bên trong thuộc tính phần tử kết xuất?

lá cờ in

Khi văn bản thuộc tính chứa một trích dẫn đơn, chẳng hạn như "It's a nice day" thì trích dẫn đó khi được hiển thị sẽ thoát thành "It's a nice day". Tại sao điều đó xảy ra và nó có thể được ngăn chặn? Là twig làm điều đó trốn thoát?

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

nó nói rằng:

"Các khóa và giá trị thuộc tính được thoát tự động cho đầu ra với Html::escape()."

và cả:

"Các giá trị thuộc tính được coi là văn bản thuần túy và được xử lý như vậy. Nếu một chuỗi HTML an toàn được phát hiện, nó sẽ được chuyển đổi thành văn bản thuần túy với PlainTextOutput::renderFromHtml() trước khi thoát."

Không ai trong số họ nên thực hiện chuyển đổi đó.

lá cờ ru
* Tại sao lại xảy ra tình trạng này và có thể ngăn chặn được không? * Vì chỉ mất 2 giây để xem vấn đề bảo mật lớn: `
lá cờ ru
Về cơ bản, trong 99 trên 100 trường hợp, câu trả lời cho *Tại sao nó bị thoát?* là *Bởi vì ai đó đã tìm thấy sự cố bảo mật* ;-)
lá cờ cn
Tôi muốn có một chiếc áo phông có chữ đó trên @Hudri, cụm từ tuyệt vời!
Điểm:0
lá cờ us

Các thuộc tính được xây dựng thông qua Thuộc tính lớp bị thoát.

Các Thuộc tính::__toString() mã là mã sau đây.

$return = '';

/** @var \Drupal\Core\Template\AttributeValueBase $value */
foreach ($this->storage as $name => $value) {
  $rendered = $value->render();
  nếu ($ kết xuất) {
    $return .= ' ' . kết xuất $;
  }
}
trả về $return;

Trong một lớp mở rộng Thuộc tínhValueBase, Ví dụ Chuỗi thuộc tính, kết xuất () chứa đoạn mã sau.

giá trị = (chuỗi) $ này;
if (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
  trả về Html::escape($this->name) . '="' . $value . '"';
}

Thuộc tínhString::__toString() chứa đoạn mã sau.

trả về Html::escape($this->value);

Html::thoát() được gọi cho tên thuộc tính và giá trị của nó. Đó là lý do tại sao một thuộc tính được tạo bằng cách sử dụng mã tương tự như một dấu nháy đơn sau bên trong tên và giá trị thuộc tính được thoát.

$attributes = new Attribute(array());
$attributes['id'] = 'tất';
$attributes['style'] = 'background-color:white';
tiếng vang '<con mèo' . thuộc tính $ . '>';

Thuộc tínhArray::__toString() sử dụng mã sau đây.

// Lọc bỏ mọi giá trị trống trước khi in.
$this->value = array_unique(array_filter($this->value));
trả về Html::escape(implode(' ', $this->value));

Điều này có nghĩa là đối với một thuộc tính được tạo bằng cách sử dụng mã tương tự như mã sau, giá trị thuộc tính sẽ được thoát.

$attributes = new Attribute();
$attributes['class'] = mảng();
$attributes['class'][] = 'mèo';

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.