我想创建一个代码段数据库Web应用程序。将它存储在数据库中的最佳方法是在网页上显示片段时对html进行编码以阻止XSS吗?
感谢您的帮助!
答案 0 :(得分:7)
数据库与此无关;您只需要在将它们呈现为HTML时转义它们。
至少,您需要将所有&
编码为&
,将所有<
字符编码为<
。
但是,您的服务器端语言已经具有内置的HTML编码功能;你应该使用它而不是重新发明轮子。有关详细信息,请告诉我们您的服务器端代码所使用的语言。
根据您之前的问题,我假设您使用的是PHP
如果是这样,您正在寻找htmlspecialchars
或htmlentities
功能。
答案 1 :(得分:2)
存储时要么必须将其转义,要么在显示时将其转义。在显示器上执行此操作可能会更好,这样如果您以后需要对其进行编辑,则无需对其进行解码,然后对其进行重新编码。
此外,当您将其存储在数据库中时,您需要确保正确地将其转义,否则您将自己打开SQL注入。参数化语句是最好的方法,您根本不必更改原始数据。
答案 2 :(得分:0)
最好的办法是不将其存储在数据库中。我看到人们将存储过程作为一行存储在数据库中。只是因为你的意思并不代表你应该这样做。
答案 3 :(得分:0)
如何存储它并不重要,重要的是如何在HTML表示中呈现它。我猜你在渲染字节之前需要做一些卫生工作。另一种选择可能是将每个字符转换为HTML实体;这可能足以防止实际解释任何代码或标签。
作为示例,使用一些示例代码查看Stack Overflow页面的源代码,并查看它们如何在HTML中表示代码。