2014-01-29 39 views
0

我的index.php正在对ajax.php进行ajax后调用,并得到回显json的结果,然后解析并用js显示。所以它是POST。我希望能够通过链接mydomain/index.php?q=foo&q1=foo1分享该结果。以安全的方式通过网址分享页面?

这里是基本的伪代码的情况是不安全的,我想建议如何以安全的方式实现这一点?

//index.php 
//js 
$.post('ajax.php', querystring, function(){ 

    collect_result = result; 
}); 

//ajax.php 
parse($_POST); 
echo json_encode(result); 

// I want to be able to share result in way 

http://.../index.php?q=foo&q1=foo1 

//index.php 

if(!empty($_GET['q])) 
    $querystr = http_build_query($_GET, '', '&'); 

<div id="div1" style="display:none"><?php echo $querystr; ?></div> 

//then get it wuth jquery and make ajax.post() 


$.post('ajax.php', $('#div1').html(), function(){ 

    collect_result = result; 
}); 


//BUT THEN USER IS ABLE TO DIRECT INJECT CODE INTO MY HTML (XSS) 
//IS THERE SAFE WAY TO DO THIS SHARING VIA LINK??? 

回答

1

不知道,如果你指的这一点,但作为W3Schools的提到:

的用htmlspecialchars()函数的特殊字符转换为HTML实体。这意味着它将替换HTML字符,如<和> <和>。这可以防止攻击者通过在表单中​​注入HTML或Javascript代码(跨站点脚本攻击)来利用代码。

1

我每天和ajax一起工作,经常处理这种困境。有时候我甚至不得不把密码和用户放在一个网址中。当敏感数据变得可见时,我加密变量。我使用一个带有特殊键的php加密方法,当我通过POST接收到变量时,我会解码它。如果您对这种方法感兴趣,您可以查看cbc加密/解密。我确信还有其他人,但cbc似乎是最安全的。 (一定要启用php中的mcrypt)。