防止恶意代码注入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>
时间: 2024-10-12 12:38:46

防止恶意代码注入XSS(cross site scripting)的相关文章

XSS (Cross Site Scripting) Prevention Cheat Sheet(XSS防护检查单)

本文是 XSS防御检查单的翻译版本 https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet 介绍 本文描述了一种恰当地使用输出转码或者转义(encoding or escaping)防御XSS攻击的简单积极模式. 尽管存在巨量XSS攻击方式,遵守一些简单的规则能够彻底防住这类严重的攻击. 本文不探讨XSS攻击的商业和技术影响. reflected and stored XSS 可以

XSS 跨站脚本攻击(Cross Site Scripting)

xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制. xss攻击可以分成两种类型: 非持久型攻击 持久型攻击 下面我们通过具体例子,了解两种类型xss攻击. 1.非持久型xss攻击 顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响.非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时

xss (Cross Site Scripting)跨站脚本攻击

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. XSS攻击分成两类: 一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞. 另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页.如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构

DVWA 黑客攻防实战(十)反射型 XSS 攻击 Reflected Cross Site Scripting

XSS (Cross-site scripting) 攻击,为和 CSS 有所区分,所以叫 XSS.又是一种防不胜防的攻击,应该算是一种 "HTML注入攻击",原本开发者想的是显示数据,然而攻击者输入却是有破坏性的代码,而且能被解析执行.Symantec在2007年报告更是指出跨站脚本漏洞大概占所有网站漏洞的84%. XSS 大致分成三种类型(白帽子说安全): 反射型,就是本文的内容. 存储型,在这篇文章会介绍. DOM 型,如果用是否会存储在服务器上区分的话,DOM型也是反射型.但比

RailsCase27 Cross Site Scripting 跨站点脚本攻击

跨站点脚本是开发过程中经常需要考虑的安全问题.此种情形发生在允许用户直接输入html.javascript脚本时.在下述的website中,我们并没有过滤输入的内容,导致一些安全漏洞. 如果在输入框中输入由<script>包围的内容,当页面被加载的时候,脚本将被执行,每次均将在前端展示.例如,如果输入<script>alert('hello')</script>并保存,每次浏览此页面时,都将看到alert的窗口. 嵌入页面的javascript脚本如下: termina

HTML5 App的代码注入攻击

原文链接 摘要 基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统.它开发起来很方便,可以使用标准的web技术,包括HTML5.JavaScript 和  CSS,也可以借助一些现有的开发框架(比如PhoneGap)和手机操作系统进行交互. 众所周知,JavaScript是非常容易遭受代码注入攻击的,因此我们计划对HTML5 app进行一次系统的研究以评估基于web技术开发的手机app安全性是否可靠.成果

结合代码对xss基础的学习

前言:有人曾经说过,XSS之所以那么流行,就是因为每个网站,包括Google.Microsoft等,都会存在XSS漏洞!之前对XSS这块"肥肉"只是了解,没有系统的学习一下.趁着暑假赋闲,来系统的剖析一下这块'肥肉'. 0x01 xss基础 Cross Site Script For web client 来源于js / ActiveX / Flash - js xss使用场景 直接嵌入html: <script>alert(/xss/);</script> 元

可怕的代码注入方式

开发程序过程中遇到最可怕的被攻击方式之一就是代码注入,sql注入,脚本数据,callback回调,跨域攻击等,参数钩子等,查询了很多相关资料,给大家简单整理了一下,先列出以下几点: Shell注入 我们先来看一段perl的代码: 01 use CGI qw(:standard); 02 $name = param('name'); 03 $nslookup = "/path/to/nslookup"; 04 print header; 05 if (open($fh, "$n

20145326蔡馨熤《网络对抗》——恶意代码伪装技术实践

20145326蔡馨熤<网络对抗>--恶意代码伪装技术实践 一.木马化正常软件 基于之前的后门程序,做一些修改.再将修改后的程序的名字改成一个正常软件的名字,蒙蔽用户的眼睛.哈哈哈,瞬间觉得自己好阴险.因为之前安装过Systracer这个工具,这次就把后门程序的名字改为"Systracer安装程序". 然后双击运行"Systracer安装程序.exe".并且成功回连到Kali. 但是有个不足之处,就是程序运行后,会弹出一个类似命令行的"黑框&q