我在一个文件中有以下代码,当变量$action
等于某个值时,会向数据库中添加一条消息,然后向用户发送一封电子邮件,告知他们该消息。简单的。
在过去的几天里,数据库中添加了垃圾邮件,并向用户发送了电子邮件,通知他们有新消息。不是很多,也不是一次全部,只是随机的时间和内容,但显然是垃圾邮件。
我设置了脚本,以便如果$from
变量不等于 0 则不要继续,但它似乎以某种方式绕过了它(所有 hack 条目进入 db show from_userid = 0
)
我正在使用 cookie 来检查用户是否登录 - 当用户登录时设置了 cookie。
问题:在某个地方我可以查看我是如何被黑客入侵的,我应该使用会话而不是 cookie,这会阻止文件被访问/黑客攻击吗?
继承人的代码:
// check a user logged in as soon as file accessed
if (!isset($_COOKIE['cookieName'])) { header("Location: /userlogin.html); }
现在检查$action
变量并继续
$action = $_POST['action'];
if (($action=='contact') && ($_POST['from'])){ // AA
require_once '/home/php/lib/setup.inc';
require_once '/home/php/lib/dbconnect.inc';
$from = mysql_real_escape_string($_POST['from']);
$to = mysql_real_escape_string($_POST['to']);
$from_name = mysql_real_escape_string($_POST['from_name']);
$body = mysql_real_escape_string($_POST['body']);
$reply_id = mysql_real_escape_string($_POST['reply_id']);
$body = nl2br($body);
// add message to db
if($from!='0'){ // BB
$additem = mysql_query("
insert into user_messages (
from_userid,
to_userid,
from_name,
message_contents,
reply_to_id,
msg_read
)
VALUES (
'$from',
'$to',
'$from_name',
'$body',
'$reply_id',
'No'
)",$db
);
if(!$additem) { echo mysql_error(); exit; } // debug
// send email notif for message
$result20 = mysql_query("select name, emailaddr from users where (user_id = '$to')",$db);
if(!$result20) { echo 'result error'; echo mysql_error(); exit; } // debug
$databack20 = mysql_fetch_array($result20);
$title = 'title';
$currentdate = date("d");
$month = date("m"); // "02"
$currentmonth = date("F", mktime(0, 0, 0, $month));
$currentyear = date("Y");
$email = file_get_contents('/home/public_html/pages/html_email_templates/buddymessage.php');
$email = str_replace(">name<","$from_name",$email);
$email = str_replace(">name2<","$databack20[name]",$email);
// setting Content-type header
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'From: siteName <info@siteName.com>' . "\r\n";
//send mail
mail("$databack20[emailaddr]", "siteName Message", "$email", "$headers");
$success = "Message sent to $databack20[name]";
} // BB
} // AA