gpt4 book ai didi

php - 函数在插入mysql之前转义

转载 作者:行者123 更新时间:2023-11-29 14:05:08 26 4
gpt4 key购买 nike

我一直在研究一种代码,如果您的帖子是字符串,那么在将它们输入数据库之前,该代码会转义它们,这是一个好主意吗?这是代码:(更新为数字)

static function securePosts(){
$posts = array();
foreach($_POST as $key => $val){
if(!is_numeric($val)){
if(is_string($val)){
if(get_magic_quotes_gpc())
$val = stripslashes($val);
$posts[$key] = mysql_real_escape_string($val);
}
}else
$posts[$key] = $val;
}
return $posts;
}

然后在另一个文件中:

if(isset($_POST)){
$post = ChangeHandler::securePosts();
if(isset($post['user'])){
AddUserToDbOrWhatEver($post['user']);
}

}

在将其输入到函数中之前进行转义(addtodborwhater)时,这是好的还是会产生不良影响

最佳答案

处理用户输入时,应该区分验证和转义。

验证

您可以在此处测试用户输入的内容。如果您需要一个数字,请检查这是否确实是数字输入。验证可以尽可能尽早完成。如果验证失败,您可以立即拒绝并返回错误消息。

转义

在这里,您将用户输入带入不会损坏给定目标系统的表单中。转义应尽可能进行,并且仅针对给定系统。如果要将用户输入存储到数据库中,您可以使用诸如 mysqli_real_escape_string() 之类的函数或参数化 PDO 查询。稍后,如果您想将其输出到 HTML 页面上,您可以使用 htmlspecialchars()

预防性地转义用户输入或针对多个目标系统转义它不是一个好主意。每次转义都会破坏其他目标系统的原始值,您可以通过这种方式丢失信息。

附注

正如 YourCommonSense 正确指出的那样,使用转义函数并不总是足够安全,但这并不意味着您不应该使用它们。通常,字符编码是安全工作的一个陷阱,显式声明字符编码是一个好习惯。对于 mysqli,可以使用 $db->set_charset('utf8'); 来完成,对于 HTML 页面,它有助于使用元标记声明字符集。

关于php - 函数在插入mysql之前转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com