永远不要通过串联字符串"<div>" + user_content + "</div>"
来创建html,因为user_content
可能包含html标记,这些标记会注入导致XSS攻击的脚本。
有些库可以用字符串转义html,DOM的javascript API允许使用.textContent进行安全的内容分配,但是本地html方法呢?
例如,可能有一个html元素text
可以转义所有内部内容并将其呈现为文本。一个length
属性将告诉解析器跳过下一个length
个字符。
`<div><text length="${user_content.length()}">` + user_content + "</text></div>"
对于背景,我正在用JavaScript编写aws lambda函数。它从发电机读取用户数据,并构建一个简单的网页。 lambda没有依赖项(lambda环境中包含的aws-sdk除外),我想以这种方式保留它作为挑战。该页面不应使用javascript。
您能否编写一个JavaScript程序,以通过不受信任的输入生成不使用javascript的安全html文档。此外,无需使用html实体编码。