2016-08-27 3 views
0

이 코드를 사용하는 것이 얼마나 안전한 지 궁금합니다. 특히 $_SERVER['REMOTE_ADDR']$_SERVER['HTTP_USER_AGENT']

저는 이에 대해 조사를 해왔습니다. 내가 할 수있는 한 여기있는 것처럼 변수를 비교하는 것이 안전해야한다고 말할 수있는 한? SQL 쿼리를 실행하거나 페이지에 내용을 표시 할 때 값을 사용할 때만 걱정할 필요가 있습니까?

내가 사용하는 위치에 따라 mysqli_real_escape_string 또는 htmlspecialchars을 실행해야합니다.

언제 trim 또는 stripslashes 기능을 사용해야합니까?

나는 가장 명백하고 일반적인 방법으로 해킹 당하지 않도록 웹 사이트를 보호하려고합니다. 엄청난 보호가 필요하지는 않지만 최소한 안전하게 보호 받기를 바랍니다!

내가 간과하거나 잘못한 사항이 있습니까? 이것에 대해 설명하는 가이드가 있습니까?

session_start(); 

    if (!isset($_SESSION['logged_in'])) { 
      $_SESSION['logged_in'] = false; 
      $_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR']; 
      $_SESSION['user_agent'] = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : ''; 
    } else { 
      if ($_SESSION['ip_address'] !== $_SERVER['REMOTE_ADDR'] || ($_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT'])) { 
        session_destroy(); 
        header('Location: view/index.php'); 
        die(); 
      } 
    } 
+0

'$ _SESSION'이 아니라'$ _SERVER'를 의미합니다. – Barmar

+0

'$ _SERVER [ 'REMOTE_ADDR']'는 웹 서버에서 가져온 것이고 연결된 IP가 무엇인지 알려줍니다. '$ _SERVER [ 'HTTP_X']'값은 클라이언트가 보낸 HTTP 헤더에서 가져온 값이며 어떤 식 으로든 조작 할 수 있습니다. 이 값은 신뢰할 수 없어야하며 일반 사용자 입력처럼 처리해야합니다. –

+0

예 oops, 고정 –

답변

0

$_SERVER['REMOTE_ADDR']은 웹 서버에서 만들어 졌으므로 안전하고 신뢰할 수 있습니다. 항상 숫자 형식의 IP 주소이므로 위생 처리 할 필요가 없습니다.

$_SERVER['HTTP_USER_AGENT']은 클라이언트에서 제공되며 아무 것도 포함 할 수 있습니다. 데이터베이스에 저장하거나 표시하려면 다른 사용자가 제공 한 입력과 같이 처리해야합니다.

관련 문제