Security 在URL中发布用户数据

Security 在URL中发布用户数据,security,url,Security,Url,这样做不明智吗?我要说的是用户名和密码被传递到一个处理文件中,如下所示: echo'<script>location.href="process.php?u='.$_POST['username'].'&p='.md5($_POST['password']).'"</script>'; 这是在验证用户名和密码之后进行的。这是否会被恶意拦截?或者这是一件足够安全的事情吗?这是一件非常糟糕的事情。所有用户数据都应该存储在$\u会话中,或者,您应该设置一个验证cook

这样做不明智吗?我要说的是用户名和密码被传递到一个处理文件中,如下所示:

echo'<script>location.href="process.php?u='.$_POST['username'].'&p='.md5($_POST['password']).'"</script>';

这是在验证用户名和密码之后进行的。这是否会被恶意拦截?或者这是一件足够安全的事情吗?

这是一件非常糟糕的事情。所有用户数据都应该存储在$\u会话中,或者,您应该设置一个验证cookie并将其用于身份验证

此外,您不应保留用户的密码。您应该散列它并将散列存储在数据库中,然后在登录时根据散列检查发布的密码

此外,您的散列应该是单向的,并且您不应该能够检索或查看用户的原始密码


最后,MD5惨败。它不再是远程安全的,可以被彩虹桌攻击摧毁。你应该研究一些强度更大、速度更慢的东西,比如说。这是一件非常糟糕的事情。所有用户数据都应该存储在$\u会话中,或者,您应该设置一个验证cookie并将其用于身份验证

此外,您不应保留用户的密码。您应该散列它并将散列存储在数据库中,然后在登录时根据散列检查发布的密码

此外,您的散列应该是单向的,并且您不应该能够检索或查看用户的原始密码

最后,MD5惨败。它不再是远程安全的,可以被彩虹桌攻击摧毁。你应该研究一些强度更大、速度更慢的东西,比如说。不要这样做

好了,现在我们已经澄清了,请允许我解释一下

实际上,您所做的是将这些数据以明文形式发送给用户。即使您使用SSL加密进行传输,这仍然是一个很大的风险。它不会在浏览器中渲染,但这并不重要。它仍在发送到浏览器。即使在这种特殊情况下,你没有遇到任何问题,这也是一个坏习惯

你可能会问,但我使用的是md5,所以密码不清楚,对吗

文本是模糊的,是的。但是,您将文本的模糊版本传递给客户端,然后键入文本。这意味着您仍在显示有效的密码供所有人查看

如果密码是正确的,那么你不想以纯文本的形式显示它,因为这会给某人密码,对吗?事实上,您甚至不想将其存储为纯文本。在任何地方作为站点管理员,您甚至不想知道或有任何方法找到密码文本。如果你可以,其他人也可以。对

因此,您将密码隐藏为elughwelfguwelliurgnswfglwerlgu,代码将其解释为密码。所以你可以显示出来,对吗?错误的因为现在,通过从客户端接受ElughWelfGueLiurgNSWFGLWERLGu作为密码,您已经将ElughWelfGueLiurgNSWFGLWERLGu转换为系统接受的纯文本密码。因此,文本的模糊化没有任何作用

简而言之,永远不要以任何形式向任何人传递密码。您的应用程序应该接收密码作为输入,但决不能以任何方式将其作为输出。

不要这样做

好了,现在我们已经澄清了,请允许我解释一下

实际上,您所做的是将这些数据以明文形式发送给用户。即使您使用SSL加密进行传输,这仍然是一个很大的风险。它不会在浏览器中渲染,但这并不重要。它仍在发送到浏览器。即使在这种特殊情况下,你没有遇到任何问题,这也是一个坏习惯

你可能会问,但我使用的是md5,所以密码不清楚,对吗

文本是模糊的,是的。但是,您将文本的模糊版本传递给客户端,然后键入文本。这意味着您仍在显示有效的密码供所有人查看

如果密码是正确的,那么你不想以纯文本的形式显示它,因为这会给某人密码,对吗?事实上,您甚至不想将其存储为纯文本。在任何地方作为站点管理员,您甚至不想知道或有任何方法找到密码文本。如果你可以,其他人也可以。对

因此,您将密码隐藏为elughwelfguwelliurgnswfglwerlgu,代码将其解释为密码。所以你可以显示出来,对吗?错误的因为现在,通过从客户端接受ElughWelfGueLiurgNSWFGLWERLGu作为密码,您已经将ElughWelfGueLiurgNSWFGLWERLGu转换为系统接受的纯文本密码。因此,文本的模糊化没有任何作用

简而言之,永远不要以任何形式向任何人传递密码。应用程序应该接收密码作为输入,但决不能以任何方式将其作为输出< /p> 不,不

当某人输入密码以设置帐户或更改密码时,请使用POST和SSL

否则,密码是单向的,URL中没有MD5或纯文本

当用户登录时,给他们一个会话。这可能会过期,因此无效

至于被拦截,你只需要一个数据包嗅探器就可以了

当某人输入密码以设置帐户或更改密码时,请使用POST和SSL

否则,密码是单向的,URL中没有MD5或纯文本

当用户登录时,给他们一个会话。这可能会过期,因此无效

至于被拦截,你只需要一个数据包嗅探器

这是否会被恶意拦截

对。任何人都可以查看页面的源代码,并查看用户名和密码的md5散列。当页面为用户重定向时,它也会显示在浏览器的URL中

是否可以通过中间人的攻击拦截?不一定。如果您使用的是HTTPS,查询字符串将与请求的其余部分一起在SSL数据包中加密。如果您不使用HTTPS,任何人都可以看到查询字符串,您知道,在查看中间人攻击时,该字符串使GET与POST一样安全

下面是GET在HTTPS环境中安全性如何降低的一个很好的比较:

这是否会被恶意拦截

对。任何人都可以查看页面的源代码,并查看用户名和密码的md5散列。当页面为用户重定向时,它也会显示在浏览器的URL中

是否可以通过中间人的攻击拦截?不一定。如果您使用的是HTTPS,查询字符串将与请求的其余部分一起在SSL数据包中加密。如果您不使用HTTPS,任何人都可以看到查询字符串,您知道,在查看中间人攻击时,该字符串使GET与POST一样安全


下面是GET在HTTPS环境中如何变得不安全的一个很好的比较:

不,请不要这样做。这是恶意的……对计算机来说,是MD5哈希、字符串或任何与密码相等的加密。接待端会很高兴与杜松子酒、威士忌或伏特加一起喝。对他们来说,这和冰毒是一样的。不,请不要这样做。这是恶意的……对计算机来说,这是MD5哈希、字符串或任何与密码相等的加密。接待端会很高兴与杜松子酒、威士忌或伏特加一起喝。对他们来说,这和冰毒一样。我希望我能给你+100万。但是你得到+1。你忘了提到良好安全性的一个好特性是会话不可被另一个会话重复。我希望我能给你+100万。但是你得到+1。你忘了提到良好安全性的一个好特性是会话不可被另一个会话重复。他说的不是通过登录表单初始发送凭据,而是将用户信息发送回浏览器,并在将来的所有请求中通过url参数发送。此外,MD5已经严重过时,不应推荐使用。@Josh-他正在考虑通过Javascript更改URL或窗口。因此使用location.href位。这可能是从设置帐户到……他所说的不是通过登录表单发送凭证,而是将用户信息发送回浏览器,并在将来的所有请求中通过url参数发送。此外,MD5已经严重过时,不应推荐使用。@Josh-他正在考虑通过Javascript更改URL或窗口。因此使用location.href位。这可能是从建立帐户到。。。。