2011-05-27 66 views
3

我在view.php中有以下代码,我想将这些信息带到edit.php中,而不会影响安全性或显示变量中包含的内容。 edit.php有一个表单来编辑数据库中的信息。将mysql信息从一个页面移动到另一个页面

while ($row = mysql_fetch_assoc($result)) 
    { 
     echo "<a href=\"edit_employee.php?$row[employee_id_passport]\">" . $row['first_name'] ." " . $row['surname'] . "</a>"; 

     echo "<br />"; 
    } 
+0

包括编辑 – Ibu 2011-05-27 08:32:43

回答

0

你应该只允许登录的用户查看或编辑的信息,你也可能会得到与SQL注入:

$first_name = $_POST['first_name']; 
$sql_query = "SELECT * FROM employee_master WHERE first_name = '$first_name'"; 
$result = mysql_query($sql_query, $connection); 

您应该改为:

$first_name = mysql_real_escape_string($_POST['first_name']); 
$sql_query = "SELECT * FROM employee_master WHERE first_name = '$first_name'"; 
$result = mysql_query($sql_query, $connection); 
+0

这个文件不是一个答案的。应该添加它作为评论。 – RRStoyanov 2011-05-27 08:35:49

+0

具体问题是什么?这是对“为了安全完成任务我应该注意什么?”的答案。 – 2011-05-27 08:37:15

+0

@RRStoyanov OP想要使其安全,但不知道基本知识 - 显示他/她已经损害了安全性是一个不错的选择。 – Tadeck 2011-05-27 08:45:26

0

的最好的办法是(假设你不能做任何事情,除了使用标准的锚链接来传递变量)在表中有你的每个记录的ID为md5。所以你可以这样做

while($row = mysql_fetch_assoc($res)) 
{ 
echo "<a href=\"edit_employee.php?chksum=$row['md5']\">" . $row['first_name'] ." $row['surname'] . "</a>"; 
} 

现在在edit.php检索这个并且把它与散列进行比较。

更安全的方法是将记录的id与另一个唯一数据(如连接日期或dob)连接起来,并对整个字符串进行散列处理。这种方式非常安全。

0

选项1:只需通过链接从数据库中获取id即可。如果用户知道该ID,但不知道任何其他信息,则对其无用。使用别的东西只会带来更多的代码行。

选项2:设置用户在SESSION

3

您在安全性已危及ID - 请参阅SQL注入和转义字符串。

另外,通过要求(请参见require_once()require()函数)文件来包含应用程序的其他模块是很常见的做法。它本身不是一个安全漏洞,但确实将所有全局变量,函数和类包含到该脚本中。

如果您真的需要这样做,您可以取消设置所有变量(请参阅unset()),但只保留要传递的数据。

了解如何编写清洁且安全的代码,并且它会很安全。将一个PHP文件包含到另一个中并不是不安全的做法。

编辑:

有些开始可能是创建类的私人或受保护的属性和公共方法,然后用它们来存储敏感信息,并执行一些动作。通过使用encapsulation你可能会达到你所需要的。

0
$first_name = mysql_real_escape_string($_POST['first_name']); 

session_start(); 
$_SESSION['loggedin'] = true; 
$_SESSION['first_name'] = $first_name; 

然后,将来自数据库的其他值设置为会话变量,例如,用户的姓氏:

$_SESSION['surname'] = $row['surname']; 

然后从任何其他页面,您可以做

if ($_SESSION['loggedin'] == true) { 
    echo "Welcome $_SESSION['first_name'] $_SESSION['surname']!"; 
} 
相关问题