回答问题
(1)什么是表单
在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。
(2)浏览器可以解析运行什么语言。
超文本标记语言:HTML
可扩展标记语言:XML
脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
(3)WebServer支持哪些动态语言
PHP、JSP。
实验内容
1.Web前端HTML
(1)Apache
安装
由于我的kali好像已有Apache
,所以就没有安装的过程,但是应该可以执行sudo apt-get install apache2
来安装
(2)Apache
启停
- 执行
service apache2 start
来启动apache
服务 - 如果失败,可能是
80
端口被占用,可执行netstat -tupln | grep 80
来查看占用80端口的其他进程,然后kill processID
来杀死该进程,然后重新开启apache
即可。 - 使用
service apache2 stop
来停止apache
服务
(3)1.测试Apache
在浏览器输入127.0.0.1
,如果和下图一样,即说明可正常工作。
2.使用 cd /var/www/html 进入Apache目录下,新建一个简单的含有表单的html文件 simple_form.html :
编辑文件代码如下:
Login
在浏览器尝试打开
2.Web前端javascipt
1)在原有 simple_form.html 基础上,可以添加一段JavaScript代码,以完成对用户是否填写邮箱和密码的判断。修改后的 login_test.html 如下所示:
Login
2)在浏览器访问 file:///var/www/html/login_test.html ,如果用户邮箱或密码未填,网页会提示:
3.Web后端:MySQL基础
(1)MySQL的配置
输入代码/etc/init.d/mysql start 启动MySQL服务 注意开头不需要加cd。。。
输入mysql -u root -p ,用root权限登录MySQL
输入use mysql;进入数据库(注意进入数据库之后的操作都要加‘;’否则程序无法识别)
输入代码:update user set password=PASSWORD("20164320") whereuser='root';
修改用户登录密码为20164320
输入 flush privileges;更新权限
输入 exit 退出数据库,使用新的密码登录
使用 create database databasename; 建立数据库
使用 show databases; 查看存在的数据库
使用 use databasename; 使用我们创建的数据库
使用 create table tablename; 建立数据库表,并设置字段基本信息
使用 show tables; 查看表信息
使用 insert into tablename values('1','2'); 插入数据
输入insert into login_table values('123456789besti4320.com','20164320')插入数据表项信息
输入select * from login_table;
在MySQL中增加新用户,使用 grant select,insert,update,delete on sql.* to username@localhost identified by "password";
尝试登陆
4.Web后端:编写PHP网页,连接数据库,进行用户认证
(1)先编写简单的php网页脚本
在 /var/www/html 目录下新建一个PHP测试文件 phptest.php ,简单了解一下它的一些语法
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is my wjt php test page!
";
?>
在浏览器网址栏中输入 localhost/phptest.php?a=/etc/passwd ,可看到 /etc/passwd 文件的内容
可以看到测试网页内容:this is my php test page!
(2)利用PHP和MySQL,结合之前编写的登录网页进行登录身份认证
在var/www/html目录下创建文件login.html和login.php
login.php
代码如下:
Login
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
echo $uname;
$query_str="SELECT * FROM login_table where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "root", "666", "wh");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "
{$uname}:Welcome!!!
";
}
else {
echo "
login failed!!!!
" ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>
4.在浏览器输入 127.0.0.1/login.html 访问自己的登录界面,并登录自己的用户名和账号
简单SQL注入,XSS攻击测试
1.SQL注入
- SQL注入原理 是利用现有应用程序,将SQL命令注入到后台数据库引擎执行的能力,可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
在用户名输入框输入 ' or 1=1# ,密码任意输入,可登陆成功
实验感想
本次实验难度不大,但对代码要求较高,需要和同学合作讨论后才能完成,马上要结课了,好快啊