[英]Encrypt text using AES in Javascript then Decrypt in C# WCF Service
[英]Encrypt using jQuery and Decrypt using C#
我喜欢实现mechanisam,其中Cliend Browser上的字符串在页面发布到服务器之前使用密钥加密,然后我可以使用服务器端C#代码使用相同的密钥解密该发布的字符串。
我使用Random类在每个页面请求上生成唯一键。
<asp:TextBox runat="server" ID="txtData" ClientIDMode="Static"></asp:TextBox>
<asp:HiddenField runat="server" ID="ClientKey" ClientIDMode="Static"/>
<asp:Button runat="server" Text="Submit" OnClick="OnClick" OnClientClick="return EncryptData();"/>
function EncryptData() {
var plaintext = $('#txtData').val();
var secret = $('#ClientKey').val();
var encrypted;// Encrypt(plaintext, secret);
$('#txtData').val(encrypted);
return true;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
int key = new Random().Next();
ServerKey = key;
ClientKey.Value = key.ToString();
}
}
protected void OnClick(object sender, EventArgs e)
{
// Decrypt(txtData.Text, ServerKey.ToString()));
}
我在HDFC银行登录页面上看到了相同的机制,他们首先加密用户的密码,然后发布表单。
我会重新考虑你正在做的事情的用法。 您正在使用密钥加密某些内容,然后将该内容与密钥一起发送到服务器。 当然,阅读价值会更难,它可能会吓到一些低级嗅探器,但它并不安全。 这是默默无闻的安全 。
想想这样。 爱丽丝想要给鲍勃发送一份情书,但爱丽丝不希望鲍勃以外的其他人阅读情书,所以她把它放在保险箱里。 考虑到情书安全,她将邮件邮寄给鲍勃。 但她记得鲍勃无法打开保险箱,因此在同一个包裹中她也把钥匙放在保险箱上 。
这里的问题是邮局或任何其他可以访问包裹的人都可以打开保险箱。 在这个比喻中,Alice是客户端(网络浏览器,javascript),互联网线是邮局,服务器是Bob。
有一些方法可以使用javascript加密它。 如:
http://point-at-infinity.org/jsaes/
https://code.google.com/archive/p/crypto-js/
如果您仍然希望加密客户端上的数据,这样做没有坏处,我会避免将请求中的密钥发送回服务器。 它应该足以让服务器将其发送到客户端。 然后客户端不应该发送回来。 相反,您可以在服务器端存储会话。 这样你至少可以使中间人威胁变小。
但在这种情况下,我会使用https来发送数据。
除了方案令牌之外,HTTPS统一资源标识符(URI)方案与标准HTTP方案具有相同的语法。 但是,HTTPS通知浏览器使用添加的SSL / TLS加密层来保护流量。 SSL / TLS特别适用于HTTP,因为它可以提供一些保护,即使通信的一侧只有通过身份验证。 这是通过Internet进行HTTP事务的情况,通常只对服务器进行身份验证(由客户端检查服务器的证书)。
有人可能会说https 也可以被破解 ,但它仍然是发送敏感数据的更好选择。
经过一番思考,这是我建议你可以做的。 让其他人了解他们的想法。
创建一个额外的密钥。 密码短语(可能是问题和答案类型的东西,母亲姓名或宠物名称等),并将其用作加密或解密的密钥。
因此,在记录用户时将输入
提交。
这样,任何拦截您登录服务器端的请求的人都没有密钥可以解密。 正如smoksnes所提到的那样,使用https来提高安全性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.