[英]PHP - Having more than one htmlentities() in your code
我剛剛遇到在PHP中構建一個CRUD應用程序,講師提醒我們使用htmlentities()以避免HTML 注入,然后他說htmlentities不應該在您的代碼中多次調用,我的問題很簡單……為什么?
干杯
因為在相同的值上再次調用它可以對其進行雙重編碼。
以PHP 文檔為例:
$str = "A 'quote' is <b>bold</b>";
$firstEntity = htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
現在,如果我們再次通過htmlentities()
運行它,它將對第一個htmlentities()
調用創建的 & 符號進行編碼,您最終將得到一個雙編碼字符串:
$secondEntity = htmlentities($firstEntity);
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
關於 escaping,有兩件重要的事情需要了解:
htmlentities('1 > 2')
會給你1 > 2
1 > 2
,但htmlentities(htmlentities('1 > 2'))
會給你1 &gt; 2
1 &gt; 2
.說“只在一個地方做”是記住這兩件事的一種方式:如果你只在 output 它的時候立即做,你就不會意外地雙重轉義同一個字符串,也不會應用錯誤的 escaping對於您將在其他地方使用的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.