Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量黑客攻击_Php_Database_Security - Fatal编程技术网

PHP变量黑客攻击

PHP变量黑客攻击,php,database,security,Php,Database,Security,用户有没有办法在php中更改代码的值?假设他们有我网页的完整源代码 // make the connection $dbhost = 'localhost'; $dbuser = 'user'; $dbpass = 'password'; $db = "db"; $conn = new PDO("mysql:host=$dbhost;dbname=$db", $dbuser, $dbpass); // set errors $conn->setAttribute(PDO::ATTR_ERR

用户有没有办法在php中更改代码的值?假设他们有我网页的完整源代码

// make the connection
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'password';
$db = "db";
$conn = new PDO("mysql:host=$dbhost;dbname=$db", $dbuser, $dbpass);
// set errors
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// get the data
$stmt = $conn->prepare("select username from usernames where " . $number . " = '$session'");
$stmt->execute();
$row = $stmt->fetch();
$username =  $row[0];

if ($username == "superuser") {
// code to view secure information and make changes to people accounts
}
他们有没有办法把用户名改成“超级用户”

我计划能够在安全代码部分快速查看和编辑客户服务选项的个人帐户详细信息,因此我不希望一些随机用户能够查看和编辑其他用户的数据


谢谢

我真的建议您修复sql,仅仅使用PDO并不能保证安全性,应该避免在sql主体中使用php变量

"select username from usernames where " . $number . " = '$session'"
这也不安全

 "select username from usernames where " . $number . " = :session"
如果
$number
变成
username='superuser'-

 "select username from usernames where username='superuser' -- = :session"
--
后面的任何内容在sql中都是注释,与php中的
/
非常相似。突然间,我成了一个晚餐者。是的,对我来说,这很容易发生

这是正确的方式,

 "select username from usernames where session_id = :session"
不确定
$number
是什么,关键是sql主体中没有php变量插值。我讨厌抱怨(不,我暗自喜欢),但正确使用PDO是必要的。我在网页上看到了按“ASC”“DESC”排序的代码,这些代码并没有考虑到PDO,也并没有比MySQL旧式更安全,甚至因为他们认为它是安全的,所以也并没有那个么安全

比如说

"select username from usernames where username=1 order by $order"
想一想如果顺序是这样会发生什么

"Desc; Drop table usernames;"
例如,您可以使用if-then之类的函数来过滤数据

if( strtoupper($_POST['order']) ==  'DESC' ){
      $order = 'DESC';
}else{
      $order = 'ASC';
}
但是,无论何时在任何形式的sql中使用php变量,都必须非常小心。通常最好避免。您将注意到,在上面的示例中,用户数据从未放入sql中,它仅在计算if条件时使用

好的,至于手头的实际问题,我会完全分离管理部分,分离用户表,分离会话数据,分离所有内容。这里有几个原因,最重要的是您不必担心管理员功能泄漏到普通用户帐户。如果登录会话单独存储,则以管理员和用户身份登录会更容易。例如,您可以在不知道其密码的情况下以(用户)身份登录管理员链接。您可以记录管理操作,而不会使其受到用户数据的污染。你可以有不同级别的管理员用户,同样不用担心普通用户会因为他们是分开的而获得访问该功能的权限。把它做好是件大事

或者我可以合法地建立超级用户帐户,这样我就可以从我的网站内的帐户访问数据


这并不意味着存储他们的信用卡号码,然后偷看他们,但这是你的网站(你可以随心所欲),因此这意味着,当然有限制,比如有人来到你家,你不能在他们不知道的情况下抢劫他们或出售他们的个人信息等等。。。。他们对安全性有一定的期望,例如对您如何处理购买和账单信息有一定的期望。但是,如果是出于支持或合法的业务原因,那么最好的客户支持就是看看他们在做什么(使用类型功能登录)。现在,以他们的身份登录并运行他们的账单通常是不受欢迎的,但你明白了。我真的建议修复你的sql,仅仅使用PDO并不能保证安全性,应该避免在sql主体中使用任何php变量

"select username from usernames where " . $number . " = '$session'"
这也不安全

 "select username from usernames where " . $number . " = :session"
如果
$number
变成
username='superuser'-

 "select username from usernames where username='superuser' -- = :session"
--
后面的任何内容在sql中都是注释,与php中的
/
非常相似。突然间,我成了一个晚餐者。是的,对我来说,这很容易发生

这是正确的方式,

 "select username from usernames where session_id = :session"
不确定
$number
是什么,关键是sql主体中没有php变量插值。我讨厌抱怨(不,我暗自喜欢),但正确使用PDO是必要的。我在网页上看到了按“ASC”“DESC”排序的代码,这些代码并没有考虑到PDO,也并没有比MySQL旧式更安全,甚至因为他们认为它是安全的,所以也并没有那个么安全

比如说

"select username from usernames where username=1 order by $order"
想一想如果顺序是这样会发生什么

"Desc; Drop table usernames;"
例如,您可以使用if-then之类的函数来过滤数据

if( strtoupper($_POST['order']) ==  'DESC' ){
      $order = 'DESC';
}else{
      $order = 'ASC';
}
但是,无论何时在任何形式的sql中使用php变量,都必须非常小心。通常最好避免。您将注意到,在上面的示例中,用户数据从未放入sql中,它仅在计算if条件时使用

好的,至于手头的实际问题,我会完全分离管理部分,分离用户表,分离会话数据,分离所有内容。这里有几个原因,最重要的是您不必担心管理员功能泄漏到普通用户帐户。如果登录会话单独存储,则以管理员和用户身份登录会更容易。例如,您可以在不知道其密码的情况下以(用户)身份登录管理员链接。您可以记录管理操作,而不会使其受到用户数据的污染。你可以有不同级别的管理员用户,同样不用担心普通用户会因为他们是分开的而获得访问该功能的权限。把它做好是件大事

或者我可以合法地建立超级用户帐户,这样我就可以从我的网站内的帐户访问数据

这并不意味着存储他们的信用卡号码,然后偷看他们,但这是你的网站(你可以随心所欲),因此这意味着,当然有限制,比如有人来到你家,你不能在他们不知道的情况下抢劫他们或出售他们的个人信息等等。。。。他们对安全性有一定的期望,例如对您如何处理购买和账单信息有一定的期望。但是,如果是出于支持或合法的业务原因,那么最好的客户支持就是看看他们在做什么(使用类型功能登录)。现在以他们的身份登录