我对安全性有疑问。我有一个Javascript变量:
var toSearch = "something"
我想将此变量发送到另一个php页面。我正在使用会话:<?php session_start(); ?>
根据我的阅读,我需要使用AJAX GET / POST程序将此javascript客户端变量传递给PHP服务器端。
我知道可以这样做:
window.location.href = "myphpfile.php?name=" + javascriptVariable;
然后$_GET['name']
变量。我读过这不安全吗?是吗?
答案 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!
?>