4

安全性について質問があります。私はJavascript変数を持っています:

var toSearch = "something"

この変数を別のphpページに送信したいと思います。私はセッションを使用しています:<?php session_start(); ?>

私が読んだことから、AJAX GET / POSTプロシージャを使用して、このjavascriptクライアント側変数をPHPサーバー側に渡す必要があります。

私はこれを次の方法で行うことができることを知っています:

window.location.href = "myphpfile.php?name=" + javascriptVariable;

次に$_GET['name']変数。これは安全ではないことを読みましたか?それは...ですか?

4

3 に答える 3

2

それはあなたがそれをどうするかによっては危険なだけです。誰でもアドレスバーに好きなように入力できますが、それを制御することはできません。たとえば、私は行くことができます

http://example.com/myphpfile.php?name=fuzzball

さて、それ自体は危険ではありませんが、MySQLコードを配置し、これをサニタイズせずにMySQLデータベースに直接配置すると、危険です。他のユーザーに表示するHTMLを入力すると、危険です。

GETとPOSTは危険ではありませんが、期待どおりの状態であるとは信頼できないため、信頼できるサーバー側にあることを確認する必要があります。

于 2012-11-25T01:15:11.990 に答える
1

ページのリロードを強制したくない場合は、ajaxリクエストを使用するのがより良い解決策です。セキュリティに関しては同じなので、すべてのユーザーがクエリ文字列を簡単に操作できます...このためのアドレスバーがあります:)

window.XMLHttpRequest = window.XMLHttpRequest || window.ActiveXObject('MSXML2.XMLHTTP') || window.ActiveXObject('Microsoft.XMLHTTP');

var ajax = new XMLHttpRequest();

ajax.open('get', 'page.php?name=' + javascriptVariable, true);

if ( ajax.readyState == 4 && ajax.status == 200 )
{
    // ajax.responseText is the result from php server
    // ajax.responseXML is the result from php server
}

ajax.send(null);
于 2012-11-25T01:20:29.883 に答える
-1

JavaScript または Ajax リクエストが苦手な場合は、jquery .ajax メソッドをお勧めします。jQuery は十分に文書化されており、初心者に最適です。

また、変数が正しく設定されていません。次のようにする必要があります。

var toSearch = "something";

開始するには、http : //api.jquery.com/jQuery.ajax/にアクセスしてください。

これを行う方法のサンプル。

JS:

function myFunction() {

    var toSearch = "something";

    $.ajax({
       url: 'mysite/action_page.php?toSearch=' + toSearch,
       success: function(data) {
          alert('Here is some data from the $_GET request: ' + data);
       }
    });

}

PHP:

<?php
   /**
     * I strongly suggest a security measure here
     * ie: if($_GET['token'] != $_SESSION['token']) die('access not permitted');
    */


   //init
   $search_string = '';

   //set
   $search_string = htmlspecialchars(trim($_GET['toString']), ENT_QUOTES);
   //TAKE A LOOK AT PHP.net IF YOU DON'T KNOW WHAT THE TWO METHODS ABOVE DO.  
   // will help prevent xss

   echo $search_string;

   //all done!
 ?>
于 2012-11-25T01:34:48.610 に答える