我想知道将用户输入编码到数据库是否是一种好习惯。
或者也可以不编码为用户输入。
目前,我的方法是在进入数据库时对其进行编码,并使用Html.DisplayFor进行显示。
否。您想要将输入保持其原始形式,直到需要它并知道输出类型是什么为止。目前可能是HTML,但是稍后如果您想将其更改为json,文本文件,xml等,编码可能会使它看起来与您想要的不同。
因此,首先您要确保安全地验证输入。知道每个输入的要求是什么,并验证它们是否具有正确的长度,范围,字符集等,这是一个好主意。您希望限制允许输入的有效字符的类型。输入类型的字符。(如果使用正则表达式来验证输入,请确保您不使用容易受到正则表达式拒绝服务攻击的正则表达式。
在代码中四处移动数据时,请确保以正确的方式处理数据,以免将其转变为注入攻击。
由于您在谈论数据库,因此最佳实践是使用参数化语句。在上面的链接中查看预防方法。
然后,当使用MVC输出时,如果您未使用RAW或MvcHtmlString函数/调用,则输出将被自动编码。使用自动编码时,您要确保使用的是AntiXss编码器,而不是默认编码器(白名单方式与黑名单方式)。关联
如果使用的是Raw或MvcHtmlString,则要确保完全信任值(对它们进行硬编码),或者使用AntiXss Encoder类手动对其进行编码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句