最好/最安全的方法是确保用户输入任何html或javascript(甚至是SQL)到一个表格中以清除所有内容并且只显示纯文本(或以纯文本格式显示其html)或者给用户一个错误?显然,我正在尝试阻止XSS和任何类型的注入,以及我不希望用户尝试用他们自己的HTML来干扰我的页面显示。理想情况下,我宁愿不将HTML写入数据库。
编辑:我不确定是谁作为答案标记,因为你们从不同的角度解决了这个问题
答案 0 :(得分:1)
为什么在存储到数据库之前进行过滤?输出时过滤。例如,在Web应用程序中,您可以进行HTML编码。 Razor @
函数已经这样做了:
@Model.SomePropertyThatCouldContainHTML
现在你很安全。在数据库中,您可以存储可以在其他应用程序中重用的实际字符串。例如,在桌面应用程序中,您没有担心XSS,因此删除这些标记是没有意义的。
但是如果您需要显示未编码的用户输入,您可以使用AntiXSS库从中删除所有可能导致XSS的危险javascript代码。
就SQL而言,总是使用参数化查询,这样您就不必担心任何SQL注入。
答案 1 :(得分:0)
默认情况下,您的网站会启用“请求验证”。基本上,这将检查每个请求到服务器,如果它检测到一个潜在的危险请求,它将抛出异常。理论上它很棒但是现实是,至少在我的经验中,你几乎总是在你正在使用某种RTE(或者一般的用户输入)的页面上关闭它,因为仅仅存在HTML会导致验证失败。
有许多方法可以阻止XSS,但这里有一些基础知识:
以下是一些资源:
最后,如果有疑问Google
答案 2 :(得分:0)