php - HTML 的日期类型的输入是否存在 SQL 注入(inject)漏洞?

标签 php html mysql

我知道在服务器上处理用户输入并将其插入数据库时​​,我们需要使用准备好的语句来防止SQL注入(inject)。

我注意到一些关于 HTML 的 <input type="date"> 例如,当您选择日期时,检查元素后不会显示值;但是,文本框、复选框等会显示值。你可以try这里。

这是否意味着日期输入不易受到 SQL 注入(inject)攻击,因为您无法修改它的值?还是我走错路了?

最佳答案

您走错了路,因为您做出了用户无法修改该值的错误假设,而您真正要证明的是非恶意用户无法轻易修改或破坏该值.

这是两个截然不同的东西。

实际上,使用准备好的语句没有有效的异常(exception)。有多少教程和示例显示使用字符串连接构建 SQL 语句,这真是一个悲剧。不应该这样做。在某些情况下它“理论上”是安全的,但这不应该成为您思考过程的一部分。

即使您从自己的数据库中获取数据,您仍然无法信任它并且您无需考虑某个值是否受到 SQL 注入(inject)的影响,因为答案是总是 “是的。”

唯一的问题是漏洞利用的难度以及可能涉及的间接层数。

恶意用户通常不会按您预期的方式使用您的应用程序。如评论中所述,curl 等命令行工具可用于向您的服务器提交请求,这与浏览器发送的请求无法区分。来自客户的所有信息都特别可疑,但即使不是来自外部的信息也应被视为具有潜在危险。

关于php - HTML 的日期类型的输入是否存在 SQL 注入(inject)漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51906032/

相关文章:

mysql - 简单的连接查询在本地主机中工作但在服务器中不起作用?

php - MySql 和 PHP 时间重叠

javascript - 获取一个javascript变量到PHP变量

php - 使用单个查询更新多行

php - 从 ID 数组获取数据库结果

javascript - HTML 中的 "Placeholder"属性

php - CakePhp,MySQL "Like"如何作为不区分大小写的搜索工作

html - 是否可以在 CSS3 选择器中使用 CSS 变量?

html - 伪元素的过渡延迟

php - 从 JOIN 查询中检索唯一结果