Php 在登录和注册时使用htmlspecialchars
我试图保护我的网站免受xss攻击,为此我使用了htmlspecialchars和mysqli_real_escape_字符串 现在我尝试让用户登录并注册,而他仍然可以使用Php 在登录和注册时使用htmlspecialchars,php,Php,我试图保护我的网站免受xss攻击,为此我使用了htmlspecialchars和mysqli_real_escape_字符串 现在我尝试让用户登录并注册,而他仍然可以使用之类的标志 我使用以下代码作为用户名: 通过注册: $username = mysqli_real_escape_string($mysql,$_POST['username']); $username = strtolower($username); $username = htmlspecialch
$username = mysqli_real_escape_string($mysql,$_POST['username']);
$username = strtolower($username);
$username = htmlspecialchars($username);
及登入:
$username = mysqli_real_escape_string($mysql,$_POST['username']);
$username = strtolower($username);
$username = htmlspecialchars(htmlspecialchars($username));
echo "Username: $username<br>";
当我尝试登录时,它会显示密码或用户名不正确!,
但是登录时的echo与数据库中的用户名完全匹配
首先,我在登录时只使用了一个htmlspecialchars,但它只会回显用户名,不会更改任何内容,我无法登录
有人知道我怎么做吗?不要在数据库中保存HTML编码的用户名。用户名应与数据库中保存的用户名相同,因为这是用户想要使用的用户名。您还可以使用此值与类似的登录进行比较。。。其中username=?。为了登录/注册/查找/比较,必须始终使用htmlspecialchars和html_解码,这会让你头疼 当您使用数据库中的用户名值并希望在您选择的媒体上输出它时,您可以使用您选择的媒体的转义机制。例如,要在HTML中输出值,可以使用htmlspecialchars等函数。这意味着,当用户使用用户名iluvuYou注册时,不需要mysqli_real_escape_字符串来避免xss,这是防止SQL注入的一种不好的方法。首选使用prepared语句shtmlspecialChars仅在您计划显示字符串或将其输出到html时才有用。事实上,没有一个用例可以用来验证字符串。
<script>alert(\'2\')</script>
echo "Username: ".htmlspecialchars($username)."</br>";