사용자로부터 정보를 수집하여 유효성을 검사하고 이후에 DB에 삽입하는 스크립트가 있습니다. PHP 코드 삽입 코드
내가 항상 "반드시 htmlspecialchars"와 "addslashes"를 실행 형태의 각 필드에있는 모든 불쾌한 문제를 방지합니다.오늘은 내 오류 로그에 보면 다음과 같은 오류 발견 :
Unknown: open(/tmp/sess_574af1197644f6c4019d664d71ea5f9e, O_RDWR) failed: Permission denied (13)
이 오류는 양식을 처리하는 파일에 생성 중입니다. 외관상으로는, 누군가는 나의 신청으로 "거칠게 자른"것을 시도한다. 내가 고민하는 것은 이것을 막는 방법이다. 다행히도 내 서버 액세스 수준이 올바른 방식으로 설정되었지만 그렇지 않은 경우 문제가 발생합니다.
방법/I는 프런트 엔드에 아닌 서버 액세스 레벨에서 해킹의 이러한 종류를 캡처하는 내 양식 유효성 검사에 변경하려면 어떻게해야합니까?
<?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("[email protected]", "$subject", $message, htmlemailheaders($email));
}
$_SESSION[message] = $msg;
}
오류를 기반으로 해킹 시도가 아니라 세션에 저장된 데이터에 액세스하는 동안 오류가 발생한 것처럼 보입니다. 양식의 코드를 제공해야합니다. 그렇지 않으면 확실하게 말할 수 없습니다. –
$ _POST [leverancier]는 $ _POST [ 'leverancier']이어야합니다. 그렇지 않으면 PHP는 레버 런셔를 상수로 해석하려고합니다. 다른 $ _POST 변수도 동일합니다. –