Obfuscating POST variables between Javascript & PHP

Obfuscating POST variables between Javascript & PHP

本文关键字:amp PHP Javascript POST variables between Obfuscating      更新时间:2023-09-26

理想情况下,我想对变量进行加密,这样就无法计算出它们,但考虑到客户端将通过javascript发送变量,并且如果他们看到代码,任何东西都可以解密,我正在寻找替代方案。

我正在考虑使用类似于md5或sha1的返回HEX的东西,但加密,然后如何将服务器时间或日期合并到变量中,使加密仅在1-2分钟内有效。

javascript将具有一个模糊/最小化函数,该函数将根据javascript按时加密,然后将其POST到php。只要服务器的日期/时间在X分钟内,它就会正确解密。

我想把看似随机的数据发给它,然后把看似随机数据拿回来。我不希望它是相同的数据。

这是最好的方法吗?我只是想阻止那些试图使用HTTP嗅探器的人。我知道一旦他们找到javascript源代码,只要有足够的时间/了解发生了什么,没有什么可以阻止它

如果你要发布实际的代码,请记住函数/能力应该同时存在于javascript和PHP5上(<5.3)。我希望原生的简单/小型函数不要为JS和PHP实现巨大的第三方类。

编辑:SSL/HTTPS是不可能的。

如果你想阻止人们监听你的网络流量,请使用https而不是http。

如果有一件事你应该学习,那就是加密很难。真的很难。如果你试着自己去做,你不会做对的,很可能会犯一些微妙的错误,以后可能会咬到你。最好把加密留给知道自己在做什么的人。

我认为HTTPS是不可能的。

你想过ROT吗?愚蠢的简单实现至少:

var output = "";
for(var i = 0; i < input.length; i++)
{
    char = ( input.charCodeAt(i) + SOME_NUMBER ) %255;
    output += String.fromCharacterCode( char )
}

然后,在PHP 中

$chars = $_POST['chars'];
$output = "";
for($i = 0; $i < strlen($chars); $i++ )
{
    $char = ord($chars[$i]) - SOME_NUMBER;
    if($char < 0 )$char += 255;
    $output .= chr($char);
}

如果您想要在Javascript上进行一些强PKI加密,您应该检查jcryption。

我建议AES加密是一个不错的选择。你可以在这里找到JavaScript库https://code.google.com/archive/p/crypto-js/和PHP一个https://packagist.org/packages/blocktrail/cryptojs-aes-php

现在在PHP方面:

<?php
include "vendor/autoload.php";
use Blocktrail'CryptoJSAES'CryptoJSAES;
$passphrase = "secret";
$text = "example value";
$encrypted = CryptoJSAES::encrypt($text, $passphrase);
echo "Encrypted: ", $encrypted, PHP_EOL;

它输出:

Encrypted: U2FsdGVkX1/JVv/nS7aExFZiatvG8Lha7MflNsfuLHo=

我们将加密后的代码用JavaScript进行解密:

<!DOCTYPE html>
<html>
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
  </head>
  <body>
    <script>
      const passphrase = "secret",
            encrypted = "U2FsdGVkX1/JVv/nS7aExFZiatvG8Lha7MflNsfuLHo=";
            decrypted = CryptoJS.AES.decrypt( encrypted, passphrase );
      console.log( decrypted.toString( CryptoJS.enc.Utf8 ) );
    </script>
  </body>
</html>

在浏览器中启动此HTML后,您将获得JavaScript控制台:

example value

因此,您可以在PHP中加密敏感数据,并在客户端应用程序中使用JavaScript获取和解密。你可以反其道而行之。只是不要忘记混淆JavaScript,让这个秘密看起来像一些JavaScript。

然而,你知道它并不是真正安全的——只要付出相当大的努力,就可以找出加密方法,找到秘密并揭开数据。