簡體   English   中英

在Javascript和PHP之間混淆POST變量

[英]Obfuscating POST variables between Javascript & PHP

理想情況下,我想加密變量,所以沒有辦法解決它們,但是假設客戶端將通過javascript發送變量,並且如果他們看到代碼,任何東西都可以被解密,我正在尋找替代方案。

我正在考慮使用能夠返回類似於md5或sha1的HEX的東西但加密然后將一些服務器時間或日期合並到變量中,以便加密僅在1-2分鍾內有效。

javascript將具有混淆/最小化的功能,該功能將根據javascript基於時間加密,然后將其發布到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。

但是你明白它並不是真正安全的 - 通過相當大的努力,人們可以找出加密方法,找到秘密並發現數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM