首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入字段中允许特殊字符的安全性问题

问输入字段中允许特殊字符的安全性问题
EN

Security用户
提问于 2015-05-18 10:29:00
回答 2查看 10.9K关注 0票数 2

我正在构建一个web应用程序,在这个应用程序中,我需要让用户在输入字段中输入任何字符(甚至是特殊字符- ~!@#$%^&*()_-+=|\{}[];:'"<,.>)。为了减轻他们造成的问题,我要处理两件事-

  1. SQL注入-使用参数化查询
  2. 跨站点脚本- HTML转义用户输入,然后再添加到DOM。

够了吗还是我遗漏了什么?

为了给出一个更好的上下文,我正在解释流程。

在我的web应用程序中,用户输入直接进入数据库。它从数据库中获取以创建html (还设置html元素、属性和样式)和JSON。在创建HTML时,我正在转义从数据库获取的值。

在创建JSON时,我不会转义这些获取的值。我们的另一个应用程序使用这个JSON来创建HTML。我正在确保这些值在插入到HTML之前被转义。

EN

回答 2

Security用户

回答已采纳

发布于 2015-05-18 10:46:20

没有什么特别的人物。

这完全取决于在应用程序中使用输入的上下文。对SQLi和XSS进行保护是很好的,但是如果输入随后被用于操作系统外壳调用,则对您没有好处。

在使用数据时,一定要对其进行编码或消毒--尽可能晚一点。例如,当输出到HTML时,此时HTML会编码。

因此,如果不知道应用程序中的所有输出点或接收器,就不可能知道是否遗漏了什么。如果您所做的只是将数据插入数据库,并将其输出到HTML (而不是JSON、JavaScript、CSS等),那么如果您在正确的位置执行正确的参数化和HTML输出编码,那么就XSS和SQLi漏洞而言,您是很好的。对数据执行任何其他操作都需要适当的编码、消毒或使用正确的API (取决于格式)。

票数 3
EN

Security用户

发布于 2015-05-18 12:08:11

你把用户输入直接输入到数据库中?坏主意(一般情况下)

你应该净化所有的输入。(因此输入来自客户端,输入来自数据库)。

在您的示例中,您依赖于客户端来确保值的安全。你永远不应该完全相信的事情,因为它超出了你的控制范围。

至于剩下的部分,我将使用@SilverlightFox,因为他的观点都是有效的,并且只需加1。用户输入不仅应在显示上进行清洁,而且在存储之前也应进行消毒。

票数 -2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/89505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档