Exp8 Web基础 20154308张珊珊

一.基础问题回答

  • 什么是表单?
    • 表单是一个包含表单元素的区域,表单元素是容许用户在表单中(好比:文本域、下拉列表、单选框、复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签、表单域、表单按钮;
    • 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法;
    • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等;
    • 表单按钮:包括提交按钮、复位按钮和通常按钮,用于将数据传送到服务器上的CGI脚本或者取消输入,还能够用表单按钮来控制其余定义了处理脚本的处理工做。
  • 浏览器能够解析运行什么语言?
    • 支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。
  • WebServer支持哪些动态语言?
    • JavaScript、ASP、PHP、Ruby等脚本语言。javascript

      二.实践过程

      1.Web前端HTML

  • 经过 service apache2 start开启Apache,使用netstat -aptn查看确认端口占用
  • 浏览器中输入127.0.0.1:8080,登陆到Apache首页验证其可用
  • 访问Apache工做目录cd /var/www/html,新建一个test1.html文件,而且编写一个含有表单的html
  • 访问localhost/test1.html,设计表单时有设计两个输入框的初始值

    登陆以后由于没有编辑php因此没法链接

2.Web前端javascript

  • JavaScript是一种属于网络的脚本语言,经常使用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
  • DOM:文档对象模型,能够以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的经常使用方法。
  • 编写带有验证用户名和密码的规则功能的html
  • 登录网页,并进行验证

3.Mysql基础

  • /etc/init.d/mysql start打开mysql服务
  • mysql -u root -p以root身份登陆,输入默认密码为password,进入Mysql
  • use mysql;选择mysql数据库
  • select user, password, host from user;显示mysql库中已有的用户名、密码与权限
  • UPDATE user SET password=PASSWORD("新密码") WHERE user='root';更改用户名root的密码
  • flush privileges;更新权限
  • 输入quit退出,从新输入mysql -u root -p从新进入,使用新密码登陆成功,说明修改为功
  • CREATE SCHEMA4308zss;建立库表
  • 输入如下php

  • use 4308zss打开表,insert into users(userid,username,password,enabled) values(1,'20154308',password("20154308"),"TRUE");进行内容的添加
    html

4.php基础

  • PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸取了C语言、Java和Perl的特色,利于学习,使用普遍,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它能够比CGI或者Perl更快速地执行动态网页。用PHP作出的动态页面与其余的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比彻底生成HTML标记的CGI要高许多;PHP还能够执行编译后代码,编译能够达到加密和优化代码运行,使代码运行更快。
  • php安装sudo apt-get install php
  • 测试php。在原位置新建一个php文件
  • 进入网址localhost/zss.php。OK的

5.PHP+MySQL实现登陆网页编写

  • 在进行这一部分的实验以前,要先理清楚html,php,mysql之间的关系。访问网页登陆时会链接到php,而php会链接到指定的数据库,根据数据库里存在的记录进行匹配进而判断是否容许登陆。
  • 大部分代码都差很少,我以为起到这种链接做用的是:html里的代码是:<form method ="post" action="test.php" name="frmLogin" >,test.php是后面要用到的php文件,也就是链接到这里;php里的代码是$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');"; users是以前mysql基础里新建的用户,在这个用户里有我新建的记录,用来匹配在网页上输入的用户密码是否正确。差很少就是这些,能够作实验了。
  • 两段最终的正确的代码粘上来

html:前端

<html>
<head>  
<title>test</title>   
</head>
<body>
<table>
    <form method ="post" action="test.php" name="frmLogin"  >
    <tr>
    <td>user</td>
    <td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value=='Your name') this.value='';" /></td>
    <td> </td>
    <td> </td>
    </tr>
    <tr>
    <td>password</td>
<td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value=='Your password') this.value='';" /></td>
    <td> </td>
    <td> </td>
    </tr>
    <tr>
    <td><input type="checkbox" name="zlogin" value="1">auto login</td>

php:java

<?php
  
$uname=($_POST["username"]);
$pwd=($_POST["password"]);

/* echo $uname; */

$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";

/* echo "<br> {$query_str} <br>";*/

$mysqli = new mysqli("127.0.0.1", "zss", "20154308", "4308zss");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!";
/* Select queries return a resultset */
  • 访问网址,并输入正确的用户名20154308和密码20154308

结果是这样,链接到php文件了可是后面就压根没有去链接个人数据库。检查php文件

以前说的应该填users的地方我一开始填了4308zss,这是我新建的库的名字啊,应该填用户名啊,改掉!再次登陆是下面这样。

链接到数据库,可是匹配不了记录。多是users这个用户的权限不够,因而赋予它全部权限grant select,insert,update,delete on 4308zss.* to users@localhost identified by "20154308";
可是结果好像如出一辙,不能够!而后发现了我和某一个试验成功的同窗的代码不同的地方mysql

  • 下面改了以后正确的

  • 下面是不成功的代码

细微的差异,多是语法错误吧,最后改掉以后就ok了web

下图是匹配正确的结果sql

6.SQL注入攻击

  • SQL注入攻击:能够经过在Web表单中输入(恶意)SQL语句获得一个存在安全漏洞的网站上的数据库,经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
  • 在登陆界面用户名处输入' or 1=1#,密码随意,发现能够成功登陆

    数据库

  • 成功登录的缘由:
    select * from users where username='' or 1=1#' and password='',#是注释符,将其后面的内容给注释掉了,只剩下前面的1=1,固然是恒成立apache

7.xss攻击

  • XSS是一种常常出如今web应用中的计算机安全漏洞,它容许恶意web用户将代码植入到提供给其它用户使用的页面中。
  • 将图片保存在/var/www/html下
  • 在登陆的用户名中输入:<img src="0.jpg" />haha</a>,密码随意
  • 结果是login failed!!!(忘了截图)
  • 参照同窗博客的解决方法

可是同样的结果,也不能够……最后就是没看见图片

三.实践总结

  • 作实验仍是要首先明白实验思路以及包含的强烈的逻辑关系,搞清楚各个部分之间的关系,就好比此次的html,php,数据库之间的关系,如何链接在一块儿撑起了一个网页,虽然只是明白了一点皮毛但仍是颇有成就感!
  • 了解了一些针对网页的攻击sql注入,xss攻击,很基础的攻击,可是也让咱们明白了不少原理,若是之后要作网页开发的话就要格外注意。
相关文章
相关标签/搜索