所以目前我有一个带有date
类型元素的表单,在提交时我使用这个处理表单:
<?php
// Only process POST requests.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$date_posted = $_POST['date_posted'];
$stmt = $mysqli->prepare("INSERT INTO test(date_posted) VALUES (?)");
$stmt->bind_param("s", $date_posted);
$stmt->execute();
$stmt->close();
http_response_code(200);
} else {
http_response_code(403);
}
exit;
为了本演示的目的,这是简化的 - 但它可以正常工作。
我的问题是,通常我会对text
表单元素等内容进行各种字符检查,但是对于date
对象 - 直接插入数据库是否安全像这样?在插入安全性之前,我是否应该检查任何潜在的滥用行为?
答案 0 :(得分:4)
所以目前我有一个带有date
类型元素的表单
任何形式的客户端检查都不能依赖。浏览器可能不支持该输入类型,或者用户可能会绕过它。
在插入安全性之前,是否有任何潜在的滥用行为?
您正在使用绑定参数,因此不需要考虑SQL注入。
可能发生的最糟糕的事情是有人发送的东西不是日期(或者不是格式正确的数据)。这将有两个结果之一:
答案 1 :(得分:-2)
您应该像对待任何其他领域一样进行同样的健全性检查。
您的表单可能只允许日期条目,但我可以在“date_posted”POST字段中向您的服务器发送POST请求,并将其用于SQL注入。