1、实验内容说明及基础问题回答javascript
2、实验过程php
3、总结与体会
html
(1).Web前端HTML(0.5分)前端
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。java
(2).Web前端javascipt(0.5分)mysql
理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。web
(3).Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表(0.5分)sql
(4).Web后端:编写PHP网页,链接数据库,进行用户认证(1分)数据库
(5).最简单的SQL注入,XSS攻击测试(1分)apache
功能描述:用户能登录,登录用户名密码保存在数据库中,登录成功显示欢迎页面。
最经常使用的三种动态网页语言有ASP(ActiveServerPages),JSP(JavaServerPages),PHP(HypertextPreprocessor)
1.Web前端:HTML
sudo apt-get install apache2
启动:service apache2 start
查看端口占用状况:netstat -aptn
浏览器登陆到Apache首页验证其可用
Apache的工做目录是/var/www/html
,能够测试apache是否可读取工做目录下的文件vi /var/www/html/test.txt
,而后随意输入一串字符,浏览器打开127.0.0.1:80/test.txt
,可看到test.txt的内容
get 与 post
①get是从服务器上获取数据,post是向服务器传送数据
②get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中能够看到。post是经过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一块儿传送到ACTION属性所指的URL地址。用户看不到这个过程。
③对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
④get传送的数据量较小,不能大于2KB。post传送的数据量较大,通常被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
⑤get安全性很是低,post安全性较高。可是执行效率却比Post方法好。
编写一个含有表单的HTML
网页效果如图
sudo apt-get install php
vi /var/www/html/test.php
编辑内容为<?php include($_GET["a"]); ?>
127.0.0.1:80/test.php?a=/etc/passwd
可看到/etc/passwd
文件的内容,以下图所示编写PHP网页
网页效果如图
2.Web前端javascipt
JavaScript是一种普遍用于客户端Web开发的脚本语言,经常使用来给HTML网页添加动态功能,好比响应用户的各类操做。
文档对象模型(Document Object Model,简称DOM,是W3C组织推荐的处理可扩展标志语言的标准编程接口。
在网上借鉴了一个编写验证用户名和密码的规则:用户名密码不能为空,密码长度在5-10之间
<meta charset="utf-8"/> <script language="javascript"> function check(Form){ var Username =Form.user.value; var pwd =Form.pw.value; if((Username == "")||(pwd == ""))//若是用户名为空 { alert("用户名或密码不能为空"); return false; } if (pwd.length > 10 || pwd.length < 5) { alert("密码长度应该在 5 - 10 位"); return false; } Form.submit(); } </script>
修改后
测试结果
3.Web后端:MySQL基础
apt-get install mysql
启动/etc/init.d/mysql start
,成功
mysql -u root -p 默认密码p@ssw0rd
查看基本信息show databases;
use mysql;
选择使用mysql这个数据库select user, password, host from user;
查看当前用户信息update user set password=PASSWORD("20165226") where user='root';
更改密码flush privileges;
更改权限exit
退出,而后使用新密码从新登陆mysql -u root -p
create database 数据库名称;
建立数据库
show databases;
查看存在的数据库;输入use lxs
使用刚建立的数据库lxs。输入create table user (username VARCHAR(20),password VARCHAR(20));
建立一个名为user的数据表,表中包含VARCHAR类型的两个字段:username
和password
这里使用的是varchar类型而非char类型,他们的差异以下:
char
类型指定大小后会预分配固定大小,不论是否使用空间都被占用
varchar
类型用多少占多少,只是不能超过括号中指定的上限
show tables;
查看全部的表,能够发现刚刚新建的user输入insert into user values('20165226','20165226');
向表中username`` password
两个字段插入数据,即用户名为20165226
,密码为20165226
grant select,insert,update,delete on lxs.* to lxs@localhost identified by "20165226";
将对某数据库的全部表的select,insert,update,delete
权限授予当前主机localhost
登陆的用户lxs
,20165226
是登陆密码exit
退出,而后使用新密码从新登陆lxs
用户mysql -u lxs -p
4.Web后端:编写PHP网页
Login.php
代码以下<?php $uname=$_POST["user"]; $pwd=$_POST["pw"]; echo $uname; $query_str="SELECT * FROM user where username='$uname' and password='$pwd';"; $mysqli = new mysqli("127.0.0.1", "lxs", "20165226", "lxs"); /* 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 "<br> Welcome~ <br> "; } else { echo "<br> login failed! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
127.0.0.1/test.html
访问本身的登陆界面成功
输入错误密码
输入错误帐户
5.最简单的SQL注入,XSS攻击测试
在用户名输入框中输入' or 1=1#
,密码随便输入,即可以登录成功
输入的用户名' or 1=1#
提交到后台后,被做为SQL语句中的第一个参数填入,使SQL语句变成select * from users where username='' or 1=1#' and password=''
,#
至关于注释符,会把后面的内容都注释掉,而1=1
是永真式,因此这个条件永远成立,因此可以成功登录。所以,要想避免SQL注入,应当限制用户在用户名中输入'
、#
等特殊符号。
/var/www/html
目录下事先保存一个图片文件20165226.png
<img src="20165226.png"/>
,密码随意本次实验融合了以前的web编程、数据库等知识,学习了如何在kali链接建立并调用数据库,实现了一个最基础的网页登陆功能,挺有意思的。
返回目录