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