将JavaScript变量发送到PHP变量的安全性

时间:2012-11-25 01:12:10

标签: php javascript ajax

我对安全性有疑问。我有一个Javascript变量:

var toSearch = "something"

我想将此变量发送到另一个php页面。我正在使用会话:<?php session_start(); ?>

根据我的阅读,我需要使用AJAX GET / POST程序将此javascript客户端变量传递给PHP服务器端。

我知道可以这样做:

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

然后$_GET['name']变量。我读过这不安全吗?是吗?

3 个答案:

答案 0 :(得分:2)

取决于你用它做什么,它只是不安全。任何人都可以在地址栏中输入他们喜欢的内容,而您无法控制。例如,我可以去

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

现在,这本身并不存在危险,但是如果我要放一些MySQL代码而你直接将它放在一个没有消毒的MySQL数据库中,那么它就很危险了。如果我输入HTML然后显示给其他用户,那么这很危险。

你需要做的就是记住虽然​​GET和POST并不危险,但它们不能被信任为你所期望的,因此你应该确保它们在服务器端,它可以在哪里可信的。

答案 1 :(得分: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);

答案 2 :(得分:-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!
 ?>