[英]Safety in sending JavaScript variable to PHP variable
我有一个关于安全的问题。 我有一个Javascript变量:
var toSearch = "something"
我想将此变量发送到另一个php页面。 我正在使用会话: <?php session_start(); ?>
<?php session_start(); ?>
从我读过的书中,我需要使用AJAX GET / POST过程将此javascript客户端变量传递给PHP服务器端。
我知道可以这样做:
window.location.href = "myphpfile.php?name=" + javascriptVariable;
然后$_GET['name']
变量。 我读过,这不安全吗? 是吗?
这只是不安全的,具体取决于您对它的处理方式。 任何人都可以在地址栏中键入他们喜欢的任何内容,而您对此无能为力。 例如,我可以去
http://example.com/myphpfile.php?name=fuzzball
现在,这本身并不构成危险,但是如果我要放置一些MySQL代码,而又不进行卫生处理就将其直接放置在MySQL数据库中,那就很危险。 如果我输入HTML,然后将其显示给其他用户,则很危险。
所有您需要做的就是记住,尽管GET和POST并不危险,但是它们不能像您期望的那样被信任,因此您应该确保它们位于服务器端,可以信任。
如果您不想强制重新加载页面,那么更好的解决方案是使用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);
如果您对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!
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.