防止恶意代码注入XSS(cross site scripting)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止恶意代码注入XSS(cross site scripting)相关的知识,希望对你有一定的参考价值。

Login.php页面
<!DOCTYPE html>
<html>
<head>
<title>登录页面</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action="LoginController.php" method="post">
<table>
<tr><td>用户名</td><td><input type="text" name="username"/></td></tr>
<tr><td>密&nbsp;&nbsp;码</td><td><input type="password" name="password"/></td></tr>
<tr><td><input type="submit" value="submit"/></td><td><input type="reset" value="reset"/></td></tr>
</table>
</form>
</body>
</html>


LoginController.PHP页面
<!DOCTYPE html>
<html>
<head>
<title>登录验证</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php 
//接收用户提交的用户名和密码(login.php页面提交的参数)
$username=$_REQUEST[‘username‘];
$password=$_REQUEST[‘password‘];
//到数据库验证,怎样写出安全的代码,防止其它用户攻击
//1.连接数据库
$link=mysql_connect("localhost","root","root");
if(!$link){
    die("连接数据库失败".mysql_error());
}
//2.选择数据库
mysql_select_db("test") or die("选择数据库有误".mysql_error());
//3.构建SQL语句,并查询
//使用PDO的方式来防止SQL注入
$query="select * from users where username=? and password=? ";
//1.创建一个PDO对象
$myPdo=new PDO("mysql:host=localhost;port=3306;dbname=test","root","root");
//2.设置字符编码
$myPdo->exec("set name utf8");
//3.预处理$query
$pdoStatement=$myPdo->prepare($query);
//4.把接收到的用户和密码填入
$pdoStatement->execute(array($username,$password));
//5.取出结果
$res=$pdoStatement->fetch();
if(empty($res)){
    echo "failed|<a href=‘Login.php‘>try to login</a>";
}else{
    header("Location:ManageUsers.php");
}
?>
</body>
</html>


ManageUsers.PHP页面
<!DOCTYPE html>
<html>
<head>
<title>登录验证</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
YOU SUCCEED!
</body>
</html>


以上是关于防止恶意代码注入XSS(cross site scripting)的主要内容,如果未能解决你的问题,请参考以下文章

XSS跨站脚本总结

Cross-Site Scripting (XSS) Attack Lab (Web Application: Elgg)——山东大学网络攻防实验

XSS(Cross Site Script)

XSS过滤JAVA过滤器filter 防止常见SQL注入

xss与csrf的学习

Fortify--Cross-Site Scripting:DOM