将JavaScript变量发送到PHP变量时的安全性
我有一个关于安全的问题。我有一个Javascript变量:将JavaScript变量发送到PHP变量时的安全性,php,javascript,ajax,Php,Javascript,Ajax,我有一个关于安全的问题。我有一个Javascript变量: var toSearch = "something" 我想把这个变量发送到另一个php页面。我正在使用会话: 根据我所读的内容,我需要使用ajaxget/POST过程将这个javascript客户端变量传递到PHP服务器端 我知道可以通过以下方式实现: window.location.href = "myphpfile.php?name=" + javascriptVariable; 然后$\u获取['name']变量。我听说这不安
var toSearch = "something"
我想把这个变量发送到另一个php页面。我正在使用会话:
根据我所读的内容,我需要使用ajaxget/POST过程将这个javascript客户端变量传递到PHP服务器端
我知道可以通过以下方式实现:
window.location.href = "myphpfile.php?name=" + javascriptVariable;
然后
$\u获取['name']
变量。我听说这不安全?是吗?它只是不安全,这取决于你用它做什么。任何人都可以在地址栏中键入他们喜欢的任何内容,而你对此没有控制权。例如,我可以去
http://example.com/myphpfile.php?name=fuzzball
现在,这本身并不危险,但如果我放一些MySQL代码,而您将其直接放在MySQL数据库中,而不进行任何消毒,那么这是危险的。如果我输入HTML,然后向其他用户显示,那么这是危险的
你所要做的就是记住,虽然GET和POST并不危险,但它们不能被信任为你所期望的样子,因此你应该确保它们位于服务器端,可以被信任。如果你不想强制重新加载页面,更好的解决方案是使用ajax请求。关于安全性,它是相同的,因此每个用户都可以轻松地操纵查询字符串。。。我们有一个地址栏:)
如果您不擅长JavaScript或Ajax请求,我建议使用jquery.Ajax方法。jQuery的文档非常丰富,对于初学者来说非常棒 此外,您的变量设置不正确。应该是:
var toSearch = "something";
所以访问:开始吧
如何做到这一点的示例
JS:
PHP:
那么,您希望将变量“toSearch”发送到PHP,然后将其指向PHP响应的页面?在考虑安全性之前,考虑安全性是否足够在您的上下文中进行额外的工作。使用Ajax或使用JS重定向将有相同的安全性考虑,因为两者都在客户端完成。如果您知道如何正确地管理Ajax请求,安全性问题是最小的。尝试将存储在会话中的随机令牌发送到PHP页面。如果发送的令牌与会话令牌不匹配,则die('error');谢谢-我想我将使用“在URL中传递搜索”,然后阅读Kolink在下面提出的要点。否则,如果我有一个变量需要转换成php变量,有人能提供一个清晰的例子吗?谢谢-那么当你说“没有消毒的MySQL数据库”时,有什么核心点呢?Sae Us:进行谷歌搜索,php:htmlspecialchars和php:MySQL\u real\u escape\u string。他们会做你需要的一切。另一个好的PHP方法是Time-()HTMLFraseCARS和PHP:MySQLYRealOracle EngEype字符串不是100%安全的,也不会认为它们“足够好”,因为发送非UTF-8字符(另一个SQL注入攻击向量)的危险性。我建议转换为utf-8,然后在将变量插入查询之前应用mysql\u real\u escape\u字符串。更好的是,使用PDO。这篇文章有更多好的信息:
var toSearch = "something";
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
/**
* 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!
?>