您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PHP用户输入数据的安全性

PHP用户输入数据的安全性

我同意mikikg的观点,您需要先了解sql注入和XSS漏洞,然后才能尝试保护应用程序免受这些类型的问题的侵害。

但是,我不同意他的主张,即使用正则表达式来验证用户输入是否是sql注入阻止程序。是的,请尽您所能验证用户输入。但是不要依靠它来阻止注入,因为黑客经常破坏此类过滤器。另外,对过滤器也不要太严格- 许多网站都不允许我登录,因为我的名字中有一个撇号,并且让我告诉你,这种情况发生时会很痛苦。

您在问题中提到了两种安全问题。第一个sql注入。此漏洞是“已解决的问题”。也就是说,如果您使用参数化查询,并且从不将用户提供的数据作为参数传递给其他人,那么无论发生什么情况,数据库都将为您做“正确的事”。对于许多数据库,如果使用参数化查询,则没有注入的机会,因为数据实际上并未真正嵌入sql中发送- 数据以不带前缀或类似blob的长度沿导线传递。这比数据库转义功能性能要好得多,并且可以更安全。(注意:如果使用在数据库生成动态sql的存储过程,则它们也可能存在注入问题!)

您提到的第二个问题是跨站点脚本问题。如果要允许用户提供HTML,而无需实体先将其转义,则此问题是一个开放的研究问题。可以说,如果您允许用户传递某些类型的HTML,则您的系统很可能在某个时候遭受了确定的攻击者的XSS问题。现在,解决此问题的最新技术是使用HTMLPurifier之类的库来“过滤”服务器上的数据。攻击者可以并且确实会定期破坏这些过滤器;但是到目前为止,还没有人找到一种更好的方法来保护应用程序免受此类情况的侵害。您最好只允许特定的HTML标签白名单,以及对其他任何实体进行编码的实体。

php 2022/1/1 18:53:30 有477人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶