gpt4 book ai didi

php - 大量空格进入数据库......(PHP,Mysql)

转载 作者:行者123 更新时间:2023-11-29 12:01:23 24 4
gpt4 key购买 nike

美好的一天,首先,我是一名刚开始接触编码的 I.T,所以请保持温柔 ^^。

所以目前我正在构建一个脚本,它接受输入(Nexmo)并将其发送到我的数据库。

可悲的是,我的数据库似乎充满了很多空白。由于某种原因,我似乎无法过滤掉这些空值?

有人愿意帮忙吗?谢谢!代码如下

require('db.php');
if (!$connect) {
die('Could not connect: ' .mysql_error());
}
$sql = "INSERT INTO `INCOMING` (`TO`, `TEXT` , `FROM`, `MESSAGEID`) VALUES ('$_GET[to]','$_GET[text]' ,'$_GET[msisdn]' , '$_GET[messageId]')";
if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}
else {

echo "TO";
}


mysql_close();

最佳答案

欢迎来到 StackOverflow开始编程!

首先,我知道你正在学习,但我会努力帮助你。你从书本或教程中养成了一个坏习惯,我不会让你学到它。

SQL注入(inject)是#1 vulnerability on OWASP 。通过将请求(即 $_GET)中的数据直接插入到 SQL 查询中,您就会暴露此漏洞。至少,在与查询集成之前先转义数据

$to = mysql_real_escape_string($_GET['to']);
$text = mysql_real_escape_string($_GET['text']);
$msisdn = mysql_real_escape_string($_GET['msisdn']);
$messageId = mysql_real_escape_string($_GET['messageId']);

$sql = "INSERT INTO `INCOMING` (`TO`, `TEXT` , `FROM`, `MESSAGEID`) VALUES ('$to','$text' ,'$msisdn' , '$messageId')";

我知道这看起来需要更多工作,但是良好的编程并不是要节省自己的击键次数。话虽如此,您最好还是切换到 PDO并使用参数化查询。此外,mysql_* 系列函数are deprecated .

现在 - 解决您的实际问题。所有传入数据都需要进行验证,并且经常进行过滤,以符合应用程序的业务规则。例如,如果您希望要求所有这些字段至少具有一个非空白字符,则需要强制执行这一点。构建上面的代码片段:

function filterInput($value)
{
// Trim all leading/trailing whitespace and newlines
return preg_replace('/^[\s\r\n]+|[\s\r\n]+$/', $value);
}

function validateInput($value)
{
if (NULL === $value || '' === $value) {
return false;
}

return true;
}

// Filter input per your business rules
$to = filterInput($_GET['to']);
$text = filterInput($_GET['text']);
$msisdn = filterInput($_GET['msisdn']);
$messageId = filterInput($_GET['messageId']);

// Now verify they all have real values
if (validateInput($to) && validateInput($text) && validateInput($msisdn) && validateInput($messageId)) {
// Now escape for SQL
$to = mysql_real_escape_string($to);
$text = mysql_real_escape_string($text);
$msisdn = mysql_real_escape_string($msisdn);
$messageId = mysql_real_escape_string($messageId);

// Proceed with INSERT
}

再一次,我确信您会想“天啊,这看起来需要做很多工作”,因为我把您的一行代码变成了 20 行,但这是编程处理的一部分。这也是为什么人们花费大量时间编写库和框架来抽象出大量此类“繁重工作”代码的原因。

祝你编码愉快!

关于php - 大量空格进入数据库......(PHP,Mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311968/

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