在用户无法查看数据的情况下将php数据转换为html

时间:2018-12-12 03:50:34

标签: php html

我希望获得一个html页面,以便能够获取任何字符串,例如'text',而网站用户无法看到我从何处获得信息。我现在有一个可行的方法,但是用户可以看到源,这不是我想要的。有人知道吗?

我的代码如下:

challenge.php:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
            crossorigin="anonymous">
    </head>

    <body>
        <h1 class="result">Result: </h1>

        <script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
        <script>
            var req = new XMLHttpRequest();

            req.onload = function() {
                $(".result").html(this.responseText);
            }

            req.open("get", "get-data.php", true);
            req.send();
        </script>
    </body> 
</html>

get-data.php:

<?php

echo json_encode("text");

?>

此代码的唯一问题是当用户执行ctrl + u时,他们可以看到“ get-data.php。然后,他们可以简单地转到该页面并查看文本。

2 个答案:

答案 0 :(得分:0)

您是否需要<VirtualHost *:80> ServerAdmin user@gmail.com ServerName app.domain.com ServerAlias app.domain.com DocumentRoot /var/www/app.domain.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/app.domain.com/html"> AllowOverride All </Directory> 的内容才能根据用户行为进行更改?然后,您应该使用AJAX。如果只需要显示一些静态内容,则将php嵌入页面并使用$data

如果要阻止用户直接阅读echo,则需要修改服务器上的get-data.php文件。

答案 1 :(得分:0)

无法执行您想要的操作。无论您做什么,除非代码纯粹是php,否则用户将能够看到该值。您可以获得的最接近的结果是在javascript中设置值并将其模糊化,这将使其更难阅读。

当您对var value = "text";进行几次混淆时,它看起来像var _0x567b=["\x74\x65\x78\x74"];var _0xc6ac=[_0x567b[0]];var _0xc282=[_0xc6ac[0]];var _0x68bd=[_0xc282[0]];var _0xab55=[_0x68bd[0]];var _0x396f=[_0xab55[0]];var _0x12a8=[_0x396f[0]];var value=_0x12a8[0]

仅此一项就很难阅读,但对于知道自己在做什么的人来说,花费的时间不会超过几分钟。所以我建议添加一些随机变量(我添加了500个额外的变量),然后对所有这些变量进行混淆。然后,它变得更难阅读。

var value = "text";
var value = "text";
var value = "text";
var value = "text";
var value = "text";

当您混淆几次后,最终变成var _0x398a=["\x74\x65\x78\x74"];var _0xefdc=[_0x398a[0]];var _0x6313=[_0xefdc[0]];var _0xa20b=[_0x6313[0]];var _0x2e32=[_0xa20b[0]];var _0xfe7b=[_0x2e32[0]];var value=_0xfe7b[0];var value=_0xfe7b[0];var value=_0xfe7b[0];var value=_0xfe7b[0];var value=_0xfe7b[0]

尽管这可能是一个很好的解决方案,但没有确定的方法可以使用户无法100%读取该值。您将永远只能使用户越来越难以阅读代码。

我使用的混淆工具位于以下链接:https://javascriptobfuscator.com/Javascript-Obfuscator.aspx