Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于RSA算法的PHP登录系统_Php_Security_Login - Fatal编程技术网

基于RSA算法的PHP登录系统

基于RSA算法的PHP登录系统,php,security,login,Php,Security,Login,目前,我正在用RSA类(PHP中RSA算法的实现类)连接登录系统。我读过一些关于这个算法的信息,尽管我对它有一些疑问,希望有人能澄清 RSA使用的是两个密钥——公共密钥和私有密钥,这两个密钥都是使用算法生成的。这些密钥是否只生成一次,然后包含在站点代码中(一个在管理员站点上,一个在用户站点上) 实现它的主要思想是在站点上,比如说login.php和login表单,将其编码为公钥,在发送登录名和密码进行验证时,使用公钥对其进行加密。在服务器端,此消息将使用私钥解密,并检查信息是否正确,然后返回真/

目前,我正在用RSA类(PHP中RSA算法的实现类)连接登录系统。我读过一些关于这个算法的信息,尽管我对它有一些疑问,希望有人能澄清

RSA使用的是两个密钥——公共密钥和私有密钥,这两个密钥都是使用算法生成的。这些密钥是否只生成一次,然后包含在站点代码中(一个在管理员站点上,一个在用户站点上)


实现它的主要思想是在站点上,比如说login.php和login表单,将其编码为公钥,在发送登录名和密码进行验证时,使用公钥对其进行加密。在服务器端,此消息将使用私钥解密,并检查信息是否正确,然后返回真/假信息。你能告诉我它的使用是否安全和正确吗?

如果你想确保传输安全,就不能使用服务器端脚本语言。加密和解密将首先发生在明文密码到达服务器时,这给了侦听器很好的截获时间。您可以使用RSA的javascript实现在客户端对密码进行加密,然后在服务器端使用php对密码进行解密


您将在服务器上拥有用于加密的公钥和用于解密的私钥。

只需使用
HTTPS
,而不要在实现这些算法时迷失方向。我打赌Javascript实现将意味着客户端的巨大开销。当你想加密你的口袋时,让传输层或应用层(HTTPS)来加密-它经过测试,速度快,工作正常,安装需要几分钟。

请不要实现这一点-改用HTTPS。你的提议一点也不可靠。如果在客户端使用JavaScript对表单数据进行加密,则表单数据将不安全。JavaScript不适合加密

基本规则是,在客户端上执行的任何操作都是恶意的。在客户端上运行加密是一个非常糟糕的主意


再次-使用HTTPS或不这样做

好的,谢谢你提供的信息。但是,它没有说一件事——这些密钥应该在代码中或何处,因为使用javascript使代码非常可见。如果这里的目标是从客户端到服务器的安全传输,那么SSL是正确的方法。是的,公钥是公开的。每个人都可以看到它,这使得RSA非常好。私钥应该为您自己(或本例中的服务器)隐藏。该登录系统是否将用于网站?您能否澄清设计目标是什么。您是否正在实施某种多系统体系结构,其中接收凭据的初始服务器不会进行身份验证?因此,如果我使用POST方法向服务器发送登录名和密码以连接到db之类的内容,https是最安全的方式?另外,如果我从db(选择…)获取信息,并且db在我的服务器上,我不必担心那里的安全问题,或者有没有保护它的方法?这不是恶意的。如果你有公钥,你可以按照你想要的方式破解它。私钥持有人对此不感兴趣。它只是无效-粗体移动。@sebap123:HTTPS只是对流量进行加密,您仍然需要谨慎地将用于输入/查询数据库的所有字符串正确转义。@Dyin:如果攻击者能够禁用/修改它,这是恶意的。他可以用XSS、浏览器漏洞等攻击它。如果你真的关心安全性,那么你必须假设客户端可以访问的任何东西都应该像铀一样对待。好了,现在我明白了——使用HTTPS,让这些算法处理所有事情(不包括字符串转义之类的事情)。谢谢。我不会说安装需要几分钟,但这是目前为止最好的路线。