【发布时间】:2016-01-25 17:43:41
【问题描述】:
我有一个表格。
<form name="form1" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<p><label>User Name : </label>
<input id="username" type="text" name="username" /></p>
<p><label>Password : </label>
<input id="password" type="password" name="password"/></p>
<a class="btn" href="register.php">Signup</a>
<input class="btn register" type="submit" name="submit" value="Login" />
</form>
使用$_SERVER["PHP_SELF"]。
在提交 (POST) 数据时,用户凭据以纯文本形式发送(如下所示)
好像我用“check_login.php”替换$_SERVER['PHP_SELF'] 没有问题。
我也使用了 acunetix 扫描仪,它还显示“用户凭据以明文形式发送”。
我需要使用$_SERVER['PHP_SELF'],但没有显示凭据。
【问题讨论】:
-
$_SERVER['PHP_SELF']的值是多少?扫描仪警告可能意味着您应该使用 HTTPS 而不是 HTTP。 -
@vitozev,值吗? PHP_SELF,返回当前执行脚本的文件名。我也确实使用了 HTTPS……同样的问题。
-
@votozev,我也尝试使用上述表格。 if ((empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on')) { header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);出口(); }
-
如果你必须使用php_self,请在使用前转义
-
很明显,您的浏览器可以看到它发送的内容。你应该会看到 TCP/IP 级别的通信,比如 Wireshark。