我想知道将php数据发送到js的安全方法是什么。我通过搜索找到了在js中启动php标签并通过这种方式传递数据。
var jsVar = "<"+"?php echo $phpVar;"+"?"+">";
但是传递数据暴露威胁似乎是一种危险的方式。我想知道什么是安全的另类方法。
答案 0 :(得分:3)
我并不完全确定“安全”是什么意思,但如果我正确理解您的问题,您可以使用json_encode
将数据从PHP直接注入JavaScript:
var jsVar = <?php echo json_encode($phpVar) ?>;
如果您只想将实际的PHP源代码注入脚本中,那么只需将其打印为字符串:
var jsVar = "<?php echo '<?php echo $phpVar ?>' ?>";
我无法想象这就是你的意思,因为我无法想到想要这样做的理由:)
答案 1 :(得分:3)
我想知道什么是安全的另类方法。
我不确定“安全”是什么意思,但您必须假设您发送到客户端浏览器的任何数据都可以被充满动力的用户查看。您可以通过窥探传输来保护数据(通过使用SSL,例如https
),但客户端用户的浏览器需要能够读取数据,这意味着客户端用户也可以。
您可以稍微提高标准(例如,通过模糊嵌入页面中的数据,仅通过响应Ajax调用提供它等),但使用今天的网络和网络工具(越来越多)只是嵌入在浏览器中)一个充满动力的用户将绕过你采取的预防措施(通过单步执行代码并查看存储去混淆数据的变量或来自Ajax响应的数据) ,例如)。
如果您想进一步提高标准,可以要求Flash或Java之类的插件,并将模糊(甚至加密)的数据发送到您的Flash应用程序/ Java小程序,并在应用程序中对其进行去混淆/解密/小程序。但这只是提高了使用Flash或Java调试工具的人的水平。
可能不值得打扰,我打赌你有更好的事情要做。 : - )
如果您不希望用户看到有问题的数据,请不要将其发送给他们,将其保存在安全的服务器上,并让浏览器仅询问实际允许向用户显示的信息
答案 2 :(得分:1)
json_encode是发回的最佳方式。
echo json_encode($phpVar)
答案 3 :(得分:1)
如果您的数据来自您的数据库,这是非常安全的。 当您存储和重新显示用户输入的数据时,会发生此问题。在这种情况下,您需要确保不存在可执行的javascript嵌入数据的可能性。删除或转义'“{}(); + - / *及其十六进制等值应该这样做。
您可以按照answer此
中的建议使用json_encode