Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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
PHP-加密其他站点';用户名和密码_Php_Session_Encryption_Passwords - Fatal编程技术网

PHP-加密其他站点';用户名和密码

PHP-加密其他站点';用户名和密码,php,session,encryption,passwords,Php,Session,Encryption,Passwords,我正在编写一个PHP网站,允许用户注册,注册和未注册的用户都可以为学校网站输入各自的用户名和密码(例如smith8h4ft-j9hsbnuio) 然后,我的PHP脚本发送一些$\u POST变量,下载并解析标记页面,生成一个名为: marksDB=Array(“subject”=>Array(“A”、“B”、“A”、“C”),…),并将其重新格式化 我的问题是: 如何确保用户名和密码的安全? 对于未注册的用户,我目前忘记了用户名和密码,并将marksDB放入$\u会话中。当用户处于非活动状态(例

我正在编写一个PHP网站,允许用户注册,注册和未注册的用户都可以为学校网站输入各自的用户名和密码(例如
smith8h4ft
-
j9hsbnuio

然后,我的PHP脚本发送一些
$\u POST
变量,下载并解析标记页面,生成一个名为:
marksDB=Array(“subject”=>Array(“A”、“B”、“A”、“C”),…)
,并将其重新格式化

我的问题是: 如何确保用户名和密码的安全?

对于未注册的用户,我目前忘记了用户名和密码,并将
marksDB
放入
$\u会话中。当用户处于非活动状态(例如30分钟)时,将删除marksDB。这些数据在
$\u会话中的安全性如何?那个些登录、查看页面一次,再也不查看页面的用户呢,这样脚本就不会从会话中删除marksDB了?会话是否自动删除()

那么注册用户呢?我希望一切都安全,但我不想每隔30分钟就用密码提示来烦扰用户。按照上述方式加密凭据是否安全,但不使用第三个用户设置的密码?还是每次我都要问用户密码

编辑:

感谢您的快速回复,
@贾斯汀ᚅᚔᚈᚄᚒᚔ : 我怀疑他们是否有API,但我可以问问他们,以防万一
@阿比德·侯赛因:谢谢你提供非常有用的链接。(也谢谢两位的回答)。

我会扔掉用户的凭据,只解析了
markDB
,我可能也会扔掉它(在注销或不活动后)-在需要时再次检索标记很便宜。

会话文件是服务器端的,因此客户端应该看不到它。但是如果他们知道会话ID,他们仍然可以欺骗您的程序使用另一个会话


对于已注册的用户,您可以在使用只有您知道的密钥(可能是为每个用户随机生成并存储的新密钥)加密密码后,将密码存储在DB或文件中。

会话文件将在一定时间后由垃圾收集器删除,但是在
\u会话
中存储的一个很好的经验法则是只存储您将在屏幕上输出的数据,即密码可能不是您希望存储在会话中的内容。可以从服务器读取会话文件,一些恶意用户可能会劫持会话,看到他们不应该看到的东西,甚至不知何故看到
var\u dump($\u Session)

如果您希望允许注册用户使用更长的会话,您可以使用JS定期刷新页面(不一定刷新页面..只需异步请求即可),或者如果允许,甚至可以使用
ini\u set
增加会话时间。反复询问密码并不一定更安全。。这取决于您询问时密码的脆弱程度

另一个解决方案是让臭名昭著的“记住我”cookie让用户登录


密码不是用来解密的。为了保密而加密。用于身份验证的哈希。

会话中的所有内容都是服务器端的,因此其他人无法访问它。然而,正如所解释的,会话可能被“劫持”

您可以在PHP.ini中增加会话的长度,或者在后台使用定期的AJAX调用来保持会话的活动状态。会话在服务器过期时被删除

除非别无选择,否则通常不赞成对密码进行加密以便解密。通过加密,不仅您,而且所有能够访问您的数据库和/或源代码的人都可以检索密码。

请参阅URL

也要读它

会话比cookies安全得多。但是仍然有可能窃取会话,因此黑客可以完全访问会话中的任何内容。避免这种情况的一些方法是IP检查(它工作得很好,但fi非常低,因此本身不可靠)和使用nonce。通常使用nonce时,每个页面都有一个“标记”,以便每个页面检查最后一个页面的nonce是否与其存储的内容匹配

在这两种安全检查中,都会丢失可用性。如果您执行IP检查,而用户位于内部网防火墙(或导致此情况的任何其他情况)后面,而该防火墙无法为该用户保持稳定的IP,则每次丢失IP时,他们都必须重新进行身份验证。有了暂时,你会得到一个总是很有趣的“点击后退会导致这个页面崩溃”的情况


但是有了cookie,黑客只需使用相当简单的XSS技术就可以窃取会话。如果将用户的会话ID存储为cookie,则用户也容易受到此攻击。因此,即使会话只能被能够进行服务器级黑客攻击的人穿透(这需要更复杂的方法,如果服务器是安全的,通常需要一定的权限),您仍然需要在每个脚本请求时进行一些额外级别的验证。您不应该同时使用cookies和AJAX,因为如果cookie被盗,那么您就可以更轻松地完全访问,因为您的AJAX请求可能无法对每个请求进行安全检查。例如,如果页面使用nonce,但从未重新加载页面,则脚本可能只检查该匹配项。如果cookie使用的是身份验证方法,我现在可以使用偷来的cookie和AJAX漏洞进城作恶。

如果学校网站没有为此公开API(例如),那么您的选择就有限

一般来说,将用户的明文凭证保存的时间超过绝对必要的时间从来都不是一个好主意。您可以想象的任何可能的尝试方式(会话劫持、密钥被盗、解密)都存在安全隐患