此处的示例是,如果您在网站上有一个表单,当提交时,需要使用该信息转到一个特殊的 URL,其中包含所有附加到 URL 的登录信息。您可以使用 GET 方法发布表单,但这仅限于典型的 ?variable=foo&variable2=bar 格式。
HTML 表单
具有三个信息位的典型表单,提交到名为 ftp.php 的文件
<form action="../processing/ftp.php" method="post">
<p><label for="ftp-company-name">Company</label><input type="text" name="ftp-company-name" id="ftp-company-name" /></p>
<p><label for="ftp-user-name">User Name</label><input type="text" name="ftp-user-name" id="ftp-user-name" /></p>
<p><label for="ftp-password">Password</label><input type="password" name="ftp-password" id="ftp-password" /></p>
<p><input type="submit" id="ftp-submit" class="button" value="submit" /></p>
</form>
PHP 文件
此文件读取 POST 变量(如果已设置),从中构建 URL,然后重定向到该 URL。出于安全目的,您可能需要清理 POST 变量。
<?php
if (isset($_POST["ftp-company-name"])) {
$company = $_POST["ftp-company-name"];
$username = $_POST["ftp-user-name"];
$password = $_POST["ftp-password"];
$url = "ftp://$username:[email protected]/$company";
header( "Location: $url" ) ;
} else {
// do nothing
}
?>
看起来有点不安全
它绝对安全。PHP 是一种非常安全的服务器端脚本语言。这是一个很好的代码片段,您可以将其用作 FTP 登录表单。它的作用很简单,只需将发送的用户名、密码和公司名称替换为 URL 中提供的那些变量即可。
@Umar 只有在**您**采取适当措施使其安全的情况下,PHP 才是安全的。这不是自动的。
感谢您的教程!
在提交表单时,如何避免 Safari 等某些浏览器中的“网络钓鱼”或“欺诈网站”警告?
我必须同意 Will 的观点——这非常不安全。重定向将执行一个带有密码的“GET”请求,该密码直接位于 URL 中,这将使密码以明文形式保留在服务器日志中,包括第三方代理服务器。此外,无论何时通过网络发送密码,都应将通信限制为 https。仅仅因为 PHP _可以_ 安全,并不意味着您不需要了解基本的安全编码实践——工具无法保护您免受不正确使用的影响。
是的,Allan 先生,我在我的服务器上尝试了脚本并检查了服务器日志,它确实会公开密码。
我同意 Allan 的观点,有点不安全。我在我的服务器上尝试了此代码,它确实会在日志中留下痕迹 :(
我同意这里的大多数评论,永远不要将任何应该立即编码的字符串附加到 URL,并尽量避免任何代价。
由用户输入形成的 URL 对于恶意用户来说,对您的服务器进行拒绝服务攻击并不难。
很简单……
我们可以使用 MD5 算法函数对密码进行加密
$uname = mysql_escape_string($_POST[‘uname’]);
$pass = mysql_escape_string($_POST[‘pass’]);
它实际上也不安全。MD5 是一种非常快速的算法,这意味着某人可以在单个 GPU 上运行数十亿种组合来暴力破解。
Sha512 是最佳选择。
这看起来很简单,但它容易受到 XSS 攻击。这可能导致数据库注入。
那么,如何处理这种情况的好的解决方案是什么?我是 PHP 新手。谢谢