У меня есть скрипт, который собирает информацию от пользователей, проверяет ее и отправляет дальше для вставки в БД.
Чтобы избежать любых неприятных проблем в каждом из полей формы, я всегда запускаю «htmlspecialchars»и "addlashes".
Сегодня я посмотрел в своем журнале ошибок и обнаружил следующую ошибку:
Unknown: open(/tmp/sess_574af1197644f6c4019d664d71ea5f9e, O_RDWR) failed: Permission denied (13)
Эта ошибка генерируется в файле, который обрабатывает форму.Видимо, кто-то пытается взломать мое приложение.С чем я борюсь, так это как это предотвратить.К счастью, мой уровень доступа к серверу был настроен правильно, но в противном случае у нас возникла бы проблема.
Как / что мне нужно изменить при проверке формы, чтобы захватывать подобные взломы во внешнем интерфейсе, а нена уровне доступа к серверу?
<?php
session_start();
include ($_SERVER['DOCUMENT_ROOT'].'/inc/config.inc.php');
if ($_POST[leverancier]) { $lid = CheckNumericGet($_POST[leverancier]); }
// Afhandelen van de submit
//
if ($_POST[a] == 'ervaring') {
$naam = CheckStringGet($_POST[naam]);
$ervaring = CheckStringGet($_POST[ervaring]);
$email = CheckStringGet($_POST[email]);
$twitter_naam = CheckStringGet($_POST[twitter_naam]);
// Als er een @ in twitternaam zit weghalen
//
if (substr($twitter_naam, 0,1) == '@') {
$twitter_naam = substr($twitter_naam, 1);
}
include ($_SERVER['DOCUMENT_ROOT'].'/inc/functies_mail.inc.php');
$cont = "yes";
if ($naam == '' | $ervaring == '' | $email == '' | $rating_foto == '' | $rating_service == '' | $besteld == 0) {
$cont = "no";
$msg[][1] = "Helaas, niet alle verplichte velden zijn ingevuld. Probeer het nogmaals.";
}
if (!CheckEmail($email)) {
$cont = "no";
$msg[][1] = "Het ingevulde email adres is niet correct";
}
#Als alle velden ingevuld zijn
if ($cont == 'yes') {
$server = gethostbyaddr($_SERVER['REMOTE_ADDR']);
// Ervaring in database plaatsen
//
$query = "INSERT INTO
". $tabel_ervaring ." (lid, naam, email, foto_score, service_score, ervaring, datum, foto, canvas, album, actief, twitter_naam, lev_akkoord)
VALUES
($lid, '$naam', '$email', $rating_foto, $rating_service, '$ervaring', '$datum', '$foto', '$canvas', '$album', '0', '$twitter_naam', '$akkoord')";
$result = mysql_query($query) or die(mysql_fout($query, $PHP_SELF));
$ervaring_id = mysql_insert_id();
$message = "";
$subject = "Ervaring Fotovergelijk.nl: ";
mail("xxx@xxx", "$subject", $message, htmlemailheaders($email));
}
$_SESSION[message] = $msg;
}