0

我有以下代码:

<?php

$secret_data = "data noone can know";

?>

bla bla bla alot of html

<script type="text/javascript">
function("bla bla", {
data: '<?=$secret_data?>'
}
);
</script>

当人们在他们的网络浏览器中查看源代码时,他们就会知道数据。如何在我的 JavaScript 中使用它,但仍然保持安全?

我可以以某种方式将 JavaScript 放入 PHP 中吗?

4

3 回答 3

1

您当前正在做的工作,但最终用户将能够看到“秘密数据”。任何客户端都将对用户可见。如果您需要将一些数据传递给您不希望用户看到的脚本,您可以将其存储在会话中。

<?php
    session_start();
    $_SESSION['secret_data'] = 'data noone can know';
?>
于 2013-02-02T21:01:09.790 回答
1

使用 Javascript 等客户端技术时,不可能对源代码进行隐藏和保密。它的基本原则之一。它在客户端运行。

取自本网站

JavaScript 是所谓的客户端脚本语言。这意味着它是一种在 Internet 浏览器中运行的计算机编程语言(浏览器也称为 Web 客户端,因为它连接到 Web 服务器以下载页面)。

不幸的是,因此您的陈述没有意义:

好吧,我需要 javascript 来使用秘密数据,而不让最终用户看到它是什么

为了保持代码/信息的秘密,它必须在服务器上实现/存储。

我鼓励您进一步了解 Javascript 的实际工作原理。这是描绘典型架构的图像:

服务器端和客户端技术

于 2013-02-02T21:13:00.023 回答
1

当另一个用户需要查看用户内容时,它会在 javascipt.xml 中使用。但如果另一个人知道这个 id,则该用户可以对其进行编辑。所以因此它需要被隐藏

你的问题是:

  • 如果用户知道 id,他们可以查看内容
  • 如果用户知道 id,他们可以编辑内容

您只希望创建内容的用户能够编辑它,但任何知道 id 的人都能够查看它。

就您当前的系统而言,您无法在不使内容无法查看或编辑的情况下保持 id 的秘密,并且您无法在无法查看和编辑内容的情况下提供它。

因此,试图保密 id 并不是这里的解决方案。

您需要为系统添加额外的检查层。由于任何知道该 id 的人都可以查看内容,因此您可以保留查看部分。

由于仅允许创建内容的用户对其进行编辑,因此需要额外的保护。当请求进入编辑内容时,您必须验证请求来自已知用户(即用户已登录),并且您必须确保他们有权编辑内容(即用户名登录用户与创建内容的用户的用户名相同,或者他们是管理员或具有其他适当的权限)。

那一层auth/authz可以在服务器上完成。

于 2013-02-02T21:15:26.240 回答