gpt4 book ai didi

php - 我的 MYSQL 注入(inject)语句是否容易受到攻击?

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

我相信这个声明很容易被注入(inject),但我不确定。

这方面有什么帮助吗?

谢谢。

function CheckUserLogin($userName,$password)
{
$sql="SELECT user_id
FROM users
WHERE user_name='".addslashes($userName)."' AND password ='".addslashes($password)."'";
$this->query($sql);
if($this->movenext()>0)
{
return $this->col['user_id'];
}
else
{
return false;
}
}

查询函数就是这样

function query($_query){
list($usec, $sec) = explode(" ",microtime());
$time_start = ((float)$usec + (float)$sec);


$this->query = $_query;
$this->result = @mysql_query($_query, $this->link_id) or die("<b>error in sql query</b><br><pre>".$_query."</pre>.mysql error : <b>".mysql_error($this->link_id)."</b><p>");

list($usec, $sec) = explode(" ",microtime());
$time_end = ((float)$usec + (float)$sec);
$time = $time_end - $time_start;
}

最佳答案

这就是docs on addslashes说:

Please note that use of addslashes() for database parameter escaping can be cause of security issues on most databases.

同一篇文章有​​:

To escape database parameters, DBMS specific escape function (e.g. mysqli_real_escape_string() for MySQL or pg_escape_literal(), pg_escape_string() for PostgreSQL) should be used for security reasons.

但是,在 SQL 语句中使用参数的最佳方法是使用 prepared statements 。其中参数值永远不会注入(inject)到 SQL 语句中,因此也不可能存在恶意注入(inject)。相反,数据库引擎直接使用参数值(并作为文字)来执行已编译的查询。

请阅读How can I prevent SQL injection in PHP :它有很多关于这个主题的信息。

关于php - 我的 MYSQL 注入(inject)语句是否容易受到攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105099/

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