Php 是HTML';s日期类型的输入易受SQL注入攻击?

Php 是HTML';s日期类型的输入易受SQL注入攻击?,php,html,mysql,Php,Html,Mysql,我知道,在服务器上处理用户输入并将其插入数据库时,我们需要使用准备好的语句来防止SQL注入 我注意到HTML的 例如,当您选择日期时,检查元素后不会显示值;但是,文本框、复选框等会显示值。你可以在这里 这是否意味着日期输入不易受到SQL注入的攻击,因为您无法修改其值?或者我在错误的轨道上?您在错误的轨道上,因为您错误地假设用户无法修改值,而您真正要证明的是,非恶意用户不能简单地修改或错误设置值 这是两件截然不同的事情 实际上,使用准备好的语句没有有效的例外。有多少教程和示例展示了如何使用字符串连

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

我注意到HTML的
例如,当您选择日期时,检查元素后不会显示值;但是,文本框、复选框等会显示值。你可以在这里


这是否意味着日期输入不易受到SQL注入的攻击,因为您无法修改其值?或者我在错误的轨道上?

您在错误的轨道上,因为您错误地假设用户无法修改值,而您真正要证明的是,非恶意用户不能简单地修改或错误设置值

这是两件截然不同的事情

实际上,使用准备好的语句没有有效的例外。有多少教程和示例展示了如何使用字符串连接构建SQL语句,这真是一个悲剧。不应该这样做。有些情况下,它“理论上”是安全的,但这不应该是你思考过程的一部分

即使您从自己的数据库获得数据,您仍然不能信任它,也不需要考虑某个值是否要接受SQL注入,因为答案总是“是”

唯一的问题是利用该漏洞有多困难,以及可能涉及多少层间接寻址


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

永远不要相信来自客户端的任何信息,它可能被篡改,任何验证都可以通过直接发布到目标脚本而完全绕过。假设最坏的情况&总是在服务器上严格验证。如果我使用“坏”或“坏”数据对脚本执行curl请求,该怎么办?永远不要相信用户的输入。你总是需要自己验证。您可以使用准备好的语句来帮助您实现这一点。您可以提供一个如何使用
curl
执行SQL注入的示例吗?
curl-vhttps://example.com/mypage.php -H“内容类型:多部分/表格数据”-F“日期=2018-08-19';删除表格用户;-”
…当然,如果您使用的是预先准备好的语句,那么这将是完全无用的,并且没有任何效果。