如何将输入值设置为mysql行? 超晚编辑(重要):请不要将此问题用作任何类型的教程。这里所示的例子是一场对任何攻击都开放的噩梦。我无法删除该问题,但请帮自己一个忙并关闭此选项卡。如果您将这里提供的PHP代码的某些部分放在这里,您的网站将对最简单的SQL注入开放——如果您设法使其运行,因为这里显示的方法即使在提出此问题时也被弃用。如果您在任何页面中添加此代码,公认的答案都会对您的网站造成所有可能的危险。谢谢

如何将输入值设置为mysql行? 超晚编辑(重要):请不要将此问题用作任何类型的教程。这里所示的例子是一场对任何攻击都开放的噩梦。我无法删除该问题,但请帮自己一个忙并关闭此选项卡。如果您将这里提供的PHP代码的某些部分放在这里,您的网站将对最简单的SQL注入开放——如果您设法使其运行,因为这里显示的方法即使在提出此问题时也被弃用。如果您在任何页面中添加此代码,公认的答案都会对您的网站造成所有可能的危险。谢谢,php,mysql,Php,Mysql,我想要的一切都是一个值为MySQL行的输入: <?php ob_start(); session_start(); require_once 'dbconnect.php'; $results = mysqli_query($con,"Select * FROM users WHERE userName ='$username'"); while ($name = mysqli_fetch_array($resul

我想要的一切都是一个值为MySQL行的输入:

 <?php
  ob_start();
  session_start();
  require_once 'dbconnect.php';
  $results = mysqli_query($con,"Select * FROM users WHERE userName                             ='$username'");
 while ($name = mysqli_fetch_array($results))
 {
 extract($row);
 }

  // if session is not set this will redirect to login page
  if( !isset($_SESSION['user']) ) {
   header("Location: index.php");
   exit;
  }
  // select loggedin users detail
  $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
  $userRow=mysql_fetch_array($res);
 ?>
 <!DOCTYPE html>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 You just have logged in, so now you can go to your personal folder:<br>
 <?php
 if (isset($_POST['bt']))
 {
header("Location: http://yougle.rf.gd/" . $_POST['folder']);
 }
 ?>
 <html>
 <form id="form1" name="form1" method="post" action="<?php echo                $_SERVER['PHP_SELF']; ?>">
     <input type="text" name="folder" id="folder" value=<?php echo      $name[userName] ?>>
<input type="submit" name="bt" id="bt" value="Go To" />
</form>
</body>
</html>
<?php ob_end_flush(); ?>

我几乎不知道从哪里开始

  • 您可以接受SQL注入。您不应该使用mysql_*函数。它们已弃用并从当前PHP版本中删除。而是将或与准备好的语句和绑定参数一起使用
  • 您(我假设)正在不必要地缓冲输出,以避免在内容被回显后不必要地发送
    头()
  • 你的HTML太糟糕了。两个
    标签,无
    标签等
  • 此处出现语法错误:
    echo$name[userName]
    ,因为
    userName
    不是定义的常量。试试看,你会看到这个
  • 最后,为了锦上添花,通过直接将
    $\u服务器['PHP\u SELF']
    回送到浏览器,您就有了一个XSS漏洞。解释如何使用
    htmlentities
    转义此数据来缓解此问题

  • 就我个人而言,我更倾向于谨慎行事,将所有未硬编码到脚本中的变量绑定到查询中,并在将其回显到浏览器之前正确地转义所有内容,这样我就永远不必考虑在执行过程中还有哪些操作值了。

    我几乎不知道从何处开始

  • 您可以接受SQL注入。您不应该使用mysql_*函数。它们已弃用并从当前PHP版本中删除。而是将或与准备好的语句和绑定参数一起使用
  • 您(我假设)正在不必要地缓冲输出,以避免在内容被回显后不必要地发送
    头()
  • 你的HTML太糟糕了。两个
    标签,无
    标签等
  • 此处出现语法错误:
    echo$name[userName]
    ,因为
    userName
    不是定义的常量。试试看,你会看到这个
  • 最后,为了锦上添花,通过直接将
    $\u服务器['PHP\u SELF']
    回送到浏览器,您就有了一个XSS漏洞。解释如何使用
    htmlentities
    转义此数据来缓解此问题

  • 就我个人而言,我倾向于谨慎行事,将所有未硬编码到脚本中的变量绑定到查询中,并在将其回显到浏览器之前正确地转义所有内容,这样我就不必考虑在执行过程中还有什么可能会操纵值。

    在SQL中使用未转义的$\u会话值真的吗是否构成sql注入漏洞?并不是说我不同意放弃不推荐的函数。或者在安全性(和语法有效性)方面犯了错误,总是为sql使用预先准备好的语句。但是$\u会话是由程序员控制的,因此,如果它逃进去,它看起来是安全的。@DanFarrell我假设
    $\u会话['user']是用户名,由用户控制。嘿,你能用这个特殊的测试acc看看整个网站吗?@mike当你在查询中输入数据时,你不能做任何假设。仅仅因为它来自$\u会话并没有赋予它神奇的属性。你可能会有一个bug,它允许人们在那里随意塞进东西。逃避一切。没有例外。一年后,我接受这个答案以匹配问题的标题。我无法删除该问题,因此添加安全标头是@tadmanDoes的最佳选择,在SQL中使用未替换的$\会话值真的会构成SQL注入漏洞吗?并不是说我不同意放弃不推荐的函数。或者在安全性(和语法有效性)方面犯了错误,总是为sql使用预先准备好的语句。但是$\u会话是由程序员控制的,因此,如果它逃进去,它看起来是安全的。@DanFarrell我假设$\u会话['user']是用户名,由用户控制。嘿,你能用这个特殊的测试acc看看整个网站吗?@mike当你在查询中输入数据时,你不能做任何假设。仅仅因为它来自$\u会话并没有赋予它神奇的属性。你可能会有一个bug,它允许人们在那里随意塞进东西。逃避一切。没有例外。一年后,我接受这个答案以匹配问题的标题。我无法删除此问题,因此添加安全标题是最好的选择@tadmanI真的希望此代码不会出现在公共互联网上,因为您将面临一些极其严重的风险。@tadman这是我修改的编码框架代码和一些W3S代码。从这里也可以得到一些零件。仅此而已。W3Schools充满了非常非常糟糕的代码,我强烈建议您寻找其他源代码。警告:编写您自己的访问控制层并不容易,而且有很多机会使它严重出错。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少要遵循并且永远不要将密码存储为纯文本。警告:当使用
    mysqli
    时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为