当前位置: 首页 > 知识库问答 >
问题:

PHP PDO清洁用户输入

洪鸿
2023-03-14

我一直在研究清理用户输入的最有效方法。我的应用程序是一个简单的post请求,用于对用户进行身份验证。在网上我可以找到十几种不同的“最佳”方法。这些方法中有很多都使用不推荐的php函数,或者看起来过于复杂。为了连接到我的sql数据库,我使用PDO类。

在搜索自己的函数时,我无意中发现:

带有绑定参数的预准备语句不仅更可移植、更方便、不受SQL注入的影响,而且通常比内插查询执行得快得多,因为服务器端和客户端都可以缓存已编译的查询形式。

我已经使用prepare方法创建了我的语句。这是否意味着我可以安全地抵御SQL注入攻击?我还应该担心什么?

共有2个答案

游皓
2023-03-14

@雷已经回答了问题的第一部分。对于第二部分,由于您正在验证您的用户,您还应该担心如何存储他们的密码,因此使用一些单向加密散列,并使用salt。并检查使用原始salt从用户输入的密码再次计算哈希值是否与数据库条目匹配。如果可能,还可以使用https进行身份验证。

齐昊苍
2023-03-14

如果您通过准备好的语句与PDO绑定所有用户数据,您应该不会被注入。任何放入SQL语句(如排序顺序)而不绑定的变量都是攻击的开放向量。

 类似资料:
  • 我想知道是否有人能帮上忙。清理和构建最简单的项目时出错。(见下文) 导致错误的步骤: 作为一名新员工,也就是一台不超过4个月的机器上的新用户,我从打开NetBeans 8.2开始——一周前为我安装了NetBeans和Android Studio(用于sdk)。 但是没有安装Android插件,所以我实现了nbandroid更新中心来安装插件。然后我连接了sdk——在users\user中找到。us

  • 有没有办法让npm取消构建节点\模块下的所有模块?类似于npm rebuild的东西,它删除所有构建工件,但不重建它们?

  • 问题内容: 是否有某个功能全面的功能可以很好地用于清理用户针对SQL注入和XSS攻击的输入,同时仍然允许某些类型的HTML标签? 问题答案: 常见的误解是可以过滤用户输入。PHP甚至有一个(现在已弃用的)“功能”,称为magic-quotes,它基于此思想。废话 忘记过滤(或清洁,或任何人称呼它)。 为避免出现问题,您应该做的事情很简单:每当将字符串嵌入外部代码中时,都必须根据该语言的规则对其进行

  • 问题内容: 我有一个带有2个容器(Jenkins和Nexus,都有各自的命名卷)的docker环境。我每天都有一个cron作业,该作业会删除未使用的容器和图像。一切正常。但是问题出在我的devicemapper内部: 我可以在docker文件夹中放置每个文件夹:卷(很大,但是在我看来这是正常的): 容器: 图片: Devicemapper: 是7.3G 是8.1G Docker信息: 这个空间是什

  • 我需要帮助在CakePHP中创建一个干净的URL。我已经试了一段时间,但运气不好。 这是现有的htaccess 这是我试图清理的网址: http://example.com/signup/?key=dT33Y/eKXCjgeo69XpTs39YV/4ZnHht0M5E+Xk9iDKQ= 我希望URL如下所示: http://example.com/signup/dT33Y/eKXCjgeo69Xp

  • 我正在为客户端设计一个新的web API。我以前没有设计过所谓的RESTful API,我对“做什么”和“不做什么”的大肆宣传的有效性有严重的怀疑。 也许是我,但有一件事我不明白,那就是为什么如此强调URI的结构。让 URI 表示资源,什么不表示。 然后,应用程序需要“预测”URI包含的内容,具有大量有效性代码和处理非自然URL结构的条件。 几个世纪以来,我们一直在使用这样的东西: 以及: 只要一