2
如何編碼NodeJS中EJS模板的HTML屬性。我需要這樣做:如何編碼HTML元素屬性
<img onmouseover=<% myString %> />
其中myString然後將被正確地轉義和引用是一個有效的屬性。
如何編碼NodeJS中EJS模板的HTML屬性。我需要這樣做:如何編碼HTML元素屬性
<img onmouseover=<% myString %> />
其中myString然後將被正確地轉義和引用是一個有效的屬性。
簡短的回答:
myString = myString.replace(/'|\\/g, '\\$&');
但是,如果你需要HTML特殊字符轉義也可以嘗試:
myString = myString.replace(/&/g, '&');
myString = myString.replace(/</g, '<');
myString = myString.replace(/>/g, '>');
附:注意不要使用HTML字符的替代品逃脫JavaScript運算符!
你可以試試這個:
npm install node-html-encoder
app.locals.encoder = require('node-html-encoder').Encoder;
<%= encoder.htmlEncode('<foo /> "bar"') %>
-1:不要手工做這樣的事情,因爲它從來沒有像看起來那麼簡單。 – kubal5003
如果您要自己編碼屬性,請確保[[轉義所有由OWASP指定的字符](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.232 _-_ Attribute_Escape_Before_Inserting_Untrusted_Data_into_HTML_Common_Attributes) –