2012-12-13 136 views
1

好吧,我得到了代码的代码拉基于一个用户的数据帐号PHP搜索数据库

好这里是使用IM(是的,我知道它不是安全的,现在是我的职位的原因)

<?php 

include('config.php'); 

$user_info = fetch_user_info($_GET['AccountNumber']); 

?> 
<html> 
<body> 
<div> 
<?php 
if ($user_info === false){ 
$Output = 'http://www.MyDomain.Com/'; 
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$Output.'">'; 
}else{ 
?> 
<center> 
<title><?php echo $user_info['FirstName'], ' ', $user_info['LastName'], ' - ',  $user_info['City'], ', ', $user_info['State']; ?> - Name of site</title> 

所以基本上这个代码是让我做的是有一个叫Profile.php文件,当用户访问这个网页时,返回的数据。

像这样http://MyDomain.com/Profile.php?AccountNumber=50b9c965b7c3b

我怎样才能做到这一点,现在它使用get方法真的不安全检索网址栏中的账号安全造成。

回答

0

你是否来自另一个应该POST数据而不是GET的页面?

从GET获取信息并不是非常危险。你只需要确保你与mysql_real_escape_string()逃避价值,所以是这样的:

$user_info = fetch_user_info(mysql_real_escape_string($_GET['AccountNumber'])); 

这将保护您免受SQL注入攻击。更好的办法是使用准备好的陈述和PDO

我们无法确切知道您正在运行哪些查询或查询,因为所有这些逻辑都隐藏在fetch_user_info之后,您并未将其包含在源代码中。如果您包含该代码,我们可以帮助确保它更可能。

+0

我不认为它的安全风险,但确保isset($ _ GET ['AccountNumber'])也可能是一个好主意。 – Supericy

+0

的确,这只是良好的编码习惯。 – samanime

0

如果您只想显示当前的用户配置文件,您应该在用户登录时在会话中存储用户标识或帐户编号。然后在您的配置文件页面上从会话中检索帐户编号并显示详细信息。如果没有活动会话,则可以将用户重定向到登录页面。

+0

是的,就像ifunk说的那样,如果用户可以选择登录,你可以将账号存储在会话中,否则你可以给用户一个用户名以查看详细信息。 – Dev