2012-11-08 4 views
-3

프로젝트에서 일하고 난 쿠키에 데이터를 저장하고, MySQL의 쿼리 데이터를 사용하지만 보안 것들에 대해 잘 모르겠습니다 필요 .. 을 확실히 여기 내 코드는 ...mysql 쿼리에 쿠키를 사용하는 것이 안전할까요?

if(isset($_COOKIE['user_phone_id'])){ 
    echo ""; 
    $user_phone = $_COOKIE['user_phone']; 
    $user_phone_id = $_COOKIE['user_phone_id']; 
    $user_phone_url = strtr($user_phone, " ", "-"); 
    echo ""; 
    echo "<div id='phonelist_1' class='phonelist'>  
     <a style='color:white;font:bold 15px arial,helvetica,sans-serif; ' href='$user_phone_url'> 
     <img src='./phones/".$user_phone_id.".jpg' alt='$user_phone' title='$user_phone' width='100px' height='100px' /> 
     </a><br /> 
     <a style='color:white;font:bold 15px arial,helvetica,sans-serif; ' href='$user_phone_url' title='$user_phone'> 
     $user_phone 
     </a><br /><div class='mobilebg'>"; 
    require_once "./phonec.php"; 
    $sql = "select mobile_name, mobile_id, parent_id from mobiles where parent_id =" . 
     $user_phone_id . " "; 
    $rsd = mysql_query($sql); 
    while($rs = mysql_fetch_array($rsd)) { 
     $cid = $rs['mobile_id']; 
     $cname = $rs['name_name']; 
     echo " <a href='./$cid' style='width: 100%; text-decoration:none;'> 
     <div class='mobilatcat'> 
     <em style='float: right;'></em> 
     <em style='padding-right: 20%;float: right;'>$cname</em> 
     <hr style='margin: 5px;' /></div></a>"; 
    } 
    echo "</div></div> "; 
} 
+3

쿠키는 사용자가 입력합니다. 모든 브라우저 쿠키 관리자와 마찬가지로 쉽게 조작 할 수 있습니다. – mario

+1

번거로운 이스케이프를 피하려면 [현대 데이터베이스 인터페이스] (http://php.net/manual/en/mysqlinfo.api.choosing.php)를 고려해 보았습니까? 이렇게하면 중복 될 수 있습니까? – mario

+0

문제가 발생했습니다. $ sql = "select mobile_name, mobile_id, parent_id from mobiles where parent_id =". $ user_phone_id. ""; –

답변

0

없음이 없다 안전하지 않음. 데이터베이스 쿼리 나 쿼리 데이터를 쿠키에 명시 적으로 저장하면 안됩니다.

쿠키는 mario가 말한 것처럼 사용자 입력이며 매우 쉽게 변조 할 수 있습니다. 이와 같은 데이터를위한 서버 측 저장 옵션 (세션?)을 고려하십시오.

쿠키에 이러한 데이터를 저장하려면 항상 데이터베이스에 보내기 전에 validate을 필터링하고 필터링하십시오.

+0

정말 쿠키가 필요합니다. 만약'if (mysql_num_rows()가 데이터베이스에 존재할 경우 쿠키의 유효성을 검사하거나 샘플 텍스트 파일을 사용하여 –

+0

으로 유효성을 검사하는 것이 좋습니다.) 쿠키는 데이터베이스가 아니라 클라이언트의 브라우저에 저장됩니다. 따라서 mysql_num_rows()는 데이터베이스 관련 메소드 일 뿐이므로 데이터 검증이나 쿠키 존재를 위해 사용할 수 없다. 메소드 나 정규 표현식처럼 filter_var, is_number, is_string을 사용하여 쿠키 데이터의 유효성을 검사한다. – edigu

-2

왜 돈 't 당신은

<?php 
session_start(); 
// store session data 
$_SESSION['views']=1; 
?> 
+0

브라우저를 닫을 때 데이터가 손실되기를 원하지 않습니다. –

-2

널리 브라우저 (IE8 +)를 통해 지원되는 localStorage 개체를 사용하여 PHP 세션을 사용합니다.

localStorage.setItem ('someData', 42); (웹 사이트 나 브라우저가 폐쇄에도) 나중에

localStorage.getItem ('someData') // === (42)

+1

-1 이것은 질문에 전혀 대답하지 않습니다. – kapa

+0

쿠키와 동일하며 브라우저가 아니라 localStorage에 데이터를 저장합니다. – Aaron

+0

localStorage가 무엇인지 압니다. 보안 문제와 관련하여 OP가 어떻게 도움이되는지 설명해주십시오. – kapa

관련 문제