Obfuscating POST variables between Javascript & PHP
Obfuscating POST variables between Javascript & PHP
理想情况下,我想对变量进行加密,这样就无法计算出它们,但考虑到客户端将通过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。
然而,你知道它并不是真正安全的——只要付出相当大的努力,就可以找出加密方法,找到秘密并揭开数据。
- php&js-将电子邮件添加到输入文本中
- PHP&CSS:如何获得表中每一行的悬停效果
- 无法使用AJAX&PHP
- 如何安全地获取&使用Facebook应用程序访问令牌发送通知使用PHP&Javascript
- 如何将Angular 2用于各种网站&使用PHP作为后端的模块
- 如果没有添加PHP&Javascript
- 将本地MySQL数据库与PHP&谷歌地图上的JavaScript
- IE不发送发布数据PHP&jQuery
- css&js文件在php中不起作用
- PHP&jQuery联系人表单错误
- 如何不允许在使用PHP的自动完成表单中不在数据库中的值&JS
- Jquery、AJAX&PHP,表单提交不起作用
- 启动&使用php停止iframe
- (PHP&JavaScript)a href添加按钮赢得'我不适用于Mozilla,但适用于IE和谷歌
- 动态路由PHP&AngularJS
- 是php json_encode&AJAX破坏了我的数组
- php&ajax检索post数据失败
- 无限滚动(mysql,php&js)循环问题
- 如何将DIV ID的值保存到数据库PHP&MySQL
- & php post receive problem