[英]deleting and updating a record in mysql using nodejs and express with ejs templating engine
[英]HTML injection in Node, Express and MongoDB. (EJS templating engine)
我是网络开发的新手。 我对安全知之甚少。 我创建了一个论坛,用户可以在其中选择匿名交谈。 所以我不注册或要求用户登录。
我的应用程序有一个巨大的缺陷。当有人在我的输入字段中输入 HTML/CSS/JS 时,更改就会呈现到实际网站上。 我一直在为此进行头脑风暴,但无法找到解决此问题的方法。
我如何检测用户是在输入 HTML 还是 CSS,以及如何克服用户的这种不当行为。 由于输入的内容已保存到数据库中,因此每次都会呈现。 请帮助伙计们! 让溶液倾泻而下。
先感谢您。
EJS 已经有内置机制来防止 HTML 注入。 <%=
标记转义 HTML。 例如:
<% var x = '<div>HTML Injection!</div>' %>
<%= x %>
将呈现类似于:
<HTML Injection!>
因此,即使看起来有人在键入代码,输出也应该是安全的。
HTML 注入可以在 EJS 中工作的唯一方法是,如果您故意使用<%-
而不是<%=
或通过重新定义escape
选项来允许它。
如果你真的需要使用<%-
那么 EJS 将停止保护你免受 HTML 注入并假设你知道你在做什么。 在这种情况下,避免 HTML 注入成为您的责任。 您可以通过将<
替换为<
来手动执行 EJS 为您执行的操作<
和>
与>
或者通过从用户输入中完全删除 HTML 标签:
const some_input = req.query.some_data;
escaped_html_input = some_input.replace(/</g, '<').replace(/>/g, '>');
deleted_html_input = some_input.replace(/<.+?>/g, '');
save(escaped_html_input);
// or save(deleted_html_input);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.