通过网址以安全的方式分享页面?

时间:2014-01-29 23:37:45

标签: javascript php ajax

我的index.php正在对ajax.php进行ajax post调用,并将结果作为回显的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???

2 个答案:

答案 0 :(得分:1)

不确定你是否参考了这个,但正如w3schools中提到的那样:

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

答案 1 :(得分:1)

我每天都在使用ajax处理这种困境。有时我甚至需要将密码和用户放在网址中。当敏感数据像这样可见时,我加密变量。我使用带有特殊键的php加密方法,并在通过POST接收变量时对其进行解码。如果您对此方法感兴趣,可以查看cbc加密/解密。我相信还有其他人,但cbc似乎是最安全的。 (一定要在php中启用mcrypt。)