20155236范晨歌_Web基础

20155236范晨歌_Web基础

目录

实践目标

  • (1)Web前端HTML
  • (2)Web前端javascipt
  • (3)Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表
  • (4)Web后端:编写PHP网页,链接数据库,进行用户认证
  • (5)最简单的SQL注入,XSS攻击测试
  • (6)发帖和会话管理

Apache

  • Apache就是一个Web服务器,经过该软件能够经过本机IP和预设的端口来访问该服务器上的网页
  • 开启apache服务:service apache2 start
  • 若是没安装,先:sudo apt-get install apache2
  • 相关重要存储位置:
    • /etc/apache2/apache2.conf:存储apache2的配置
    • /var/www/html:存储网页
    • /var/log/apache2/error.log:存储报错信息
  • 确认80端口开启
  • 查看端口占用状况以下:
  • 若是正常,便可继续执行,该步骤是整个实验的基础,保证Web服务正常开启
    -

前端编程

  • 其中action部分表示的是,在点击submit提交后将会转向哪一个请求,就上面这个代码来看,由于本地尚未这个php文件,因此点击后确定是Not Foundjavascript

后端编程 PHP

  • 通常来讲咱们有用到最多的就是javascriptphp两种脚本语言了

javascript

  • 是一种脚本语言,通常能够写在html中<head>部分,响应用户的各类操做
  • 和java比较相似,只不过全部的变量声明都是用var来进行
  • 下面给出一个简单的javascript脚本例子
<script language="javascript">  
    function isEmpty(){  
        var id = document.login.usrname.value ;  
        var pwd = document.login.password.value ;    
        if (id ==""){  
            alert("请输入用户名!");  
            return false ;  
        }
       
        if (pwd ==""){  
            alert("请输入密码!");  
            return false ;  
        } 
    }   
</script>
  • 上述代码的功能是:编写验证用户名和密码的规则,好比用户名和密码不能为空

php

  • PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP很有几分类似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有相似于C语言,如今被不少的网站编程人员普遍的运用。

MYSQL & 后端

MYSQL

  • 安装:apt-get install mysql-server mysql-client mysql-workbench
  • 启动:/etc/init.d/mysql start
  • 登陆mysql,并输入密码:p@ssw0rdphp

  • 此处能够修改本身的密码:update user set password=PASSWORD("新密码") where user='root';
  • 输入exit,从新进入便可
    html

  • 搭建数据库
    • 首先,建立数据库:create database fcg;
    • 查看数据库:show databases;
    • 使用数据库:use fcg;
    • 接着,在数据库中建立数据表:create table info (usrname VARCHAR(10), password VARCHAR(64), email VARCHAR(20), type VARCHAR(10));
      - 前端

    • 查看数据表:show tables;
    • 添加数据,格式:insert into 表名 values('值1','值2','值3'...);
    • 查看数据表:select * from info
    • 注:能够根据须要增添更多记录java

后端

测试

  • 此时咱们能够编写一个简单的php进行验证,与前端代码配套,能够提取出用户名、密码、身份类别信息:
<?php
    echo ($_GET["usrname"]);
    echo ($_GET["password"]);
    echo ($_GET["identity"]);
    echo "<br>php page 5236!<br>";
?>
  • 注:进行简单验证后说明,点击“登陆”后能够正常跳转到php脚本,说明代码应该没什么问题,接下来就应该往其中添加一些有实际意义的代码了。

编写

  • 咱们须要用php脚本语言来链接数据库与前端输入,将输入结果传入到后台(php脚本),而且连接相应的数据库,利用SQL语句读取数据库中的记录,与输入进行比对,成功便可正常登陆。
  • <?php
    
    $uname=($_GET["usrname"]);
    $pwd=($_GET["password"]);
    $type=($_GET["identity"]);                         // 读取前端数据
    
    /* echo $uname; */
    
    $query_str="SELECT * FROM info where usrname='{$uname}' and password=password('{$pwd}') and type='{$type}';";   //构造SQL语句字符串
    
    /* echo "<br> {$query_str} <br>";*/
    
    $mysqli = new mysqli("127.0.0.1", "root", "20155236", "fcg");  //登陆某台服务器的某个mysql数据库
    
    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);     //连接数据库
        exit();
    }
    echo "connection ok!<br> ";
    /* Select queries return a resultset */
    if ($result = $mysqli->query($query_str)) {
        if ($result->num_rows > 0 ){
            echo "Wellcome login Mr/Mrs:{$uname} <br> ";
        } else {
            echo "login failed!!!! <br> " ;
        }
    
        /* free result set */
        $result->close();
    }
    
    $mysqli->close();
    ?>
  • 登陆成功测试效果:
  • 登陆失败测试效果:
  • 为了能让登陆失败的用户能够从新返回登陆界面,能够在php中定义这样一段代码:header("Refresh:3;url=login.html");,能够实现3秒后从新跳回login.html(最终代码见后文连接)

简单SQL注入与XSS

SQL注入

  • SQL本是查询语句,能够实现对数据库的增、删、改、查等操做,是操做数据库数据的直接手段,可是SQL语句是存在缺陷的,根据前文中SQL的编写过程能够体会,当输入某些特定格式的字符串的时候,会利用语法避开一些检查,一般也叫这样的密码为“万能密码”

获取权限

  • 在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from info where usrname='' or 1=1#' and password='' and type='',#至关于注释符,会把后面的内容都注释掉,而1=1是永真式,因此这个条件确定恒成立,因此可以成功登录:
  • 只要弄懂sql语句查询语法或者上网搜索,就能够找到不少这样的万能密码

删除用户

  • 既然sql语句能够增删查改,那咱们也能够经过某个格式,将表中的记录删掉:
    • ';DELETE FROM info WHERE usrname='20155236';#
    • 由于上述语句是2句,因此得改改php代码:if ($result = $mysqli->multi_query($query_str)),固然原来的写法本就是防范SQL注入的一种方法
  • 将该SQL注入语句输入用户名,密码随便输入,点击登陆,会提示失败(由于此时的目的并非登陆获取权限,而是删除fcg这条记录)
  • 查看数据库,比对先后的不一样:mysql

    • 接下来若是再用以前的帐户密码是登陆不上去了

XSS

  • XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,由于其被动且很差利用,因此许多人常呼略其危害性。
  • 简单的XSS实践:
    • 用户名输入:<img src="5236.jpg">fcg</a>
    • 密码随意,但要保证该图片物理位置和网页在同一个文件夹下

什么是表单

  • 表单在网页中主要负责数据采集功能。
  • 一个表单有三个基本组成部分:
    • 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
    • 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
    • 表单按钮:包括提交按钮、复位按钮和通常按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还能够用表单按钮来控制其余定义了处理脚本的处理工做。

浏览器能够解析运行什么语言

  • HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。
  • 超文本标记语言:HTML
  • 可扩展标记语言:XML
  • 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等

WebServer支持哪些动态语言

  • ASP语言,PHP语言和JSP语言
    • ASP:即Active Server Pages,是MicroSOft公司开发的服务器端脚本环境,可用来建立动态交互式网页并创建强大的web应用程序。
    • PHP:即Hypertext Preprocessor,是一种通用开源脚本语言。语法吸取了C语言、Java和Perl的特色,主要适用于Web开发领域。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。
    • JSP:即Java Server Pages,其根本是一个简化的Servlet设计。JSP技术有点相似ASP技术,它是在传统的网页HTML文件中插入Java程序段和JSP标记,从而造成JSP文件,)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其余操做系统上运行。

实验感想

  • 知识点超级多,须要了解的东西也超级多,但能够归纳为:apache(html)<——>php<——>mysql,apache负责搭建web服务挂载html网页,mysql负责数据库的维护,php负责为前两者“搭桥牵线”,使前端与后台数据可以交互。
  • 若是不掌握一些基本的web相关知识与语法,不接触web类基础的编程,是没法理解一些攻防原理的,就像本次简单的SQL注入和XSS攻击,这些都是基于语法的漏洞来实现攻击的。后悔没有好好学啊
相关文章
相关标签/搜索