2016-08-27 2 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

yeah oops、fixed –

答えて

0

$_SERVER['REMOTE_ADDR']は、Webサーバーによって作成されたもので、安全で信頼性の高いものです。それは常に数値形式のIPアドレスです。あなたはそれをサニタイズする必要はありません。

$_SERVER['HTTP_USER_AGENT']はクライアントからのもので、何でも含めることができます。データベースに格納したり表示したりする場合は、ユーザーが入力した他の入力と同様に扱う必要があります。

関連する問題