理解HTML,学会Web前端、Web后端和数据库编程及SQL注入、XSS攻击测试
教程javascript
查看Apache的配置文件 /etc/apache2/apache2.conf ,能够看到侦听端口的配置文件名php
虚拟机里已经存在Apache,使用service apache2 start
启动Apache。使用netstat -aptn
查看端口信息,看到80端口被Apache2监听,启动成功html
若是有其余应用有端口冲突,能够修改ports.conf前端
对Apache进行测试:打开网页127.0.0.1:80
可打开上次实验克隆的网页,在Apache的工做目录下/var/www/html
编辑一个测试文件,咱们就能够只在在网页打开看到了java
GET | POST |
---|---|
可被缓存 | 不会被缓存 |
保留在浏览器历史记录中 | 不会保留在浏览器历史记录中 |
可被收藏为书签 | 不能被收藏为书签 |
对数据有长度限制 | 对数据没有长度限制 |
apt-get install mysql-server mysql-client mysql-workbench
安装MySQLservice start/stop/restart mysql
mysql -u root -p
,密码为p@ssw0rd
,若出现错误,多重启几回数据库就能够了update user set password=PASSWORD("5315") where user='root';
flush privileges;
quit;
再从新登陆,使用咱们更改修改的密码就能够了CREATE SCHEMA `数据库名`;
建立一个名为test的数据库,使用show databases;
能够看到建立成功use 数据库名
create table 表名 (字段1,字段2 ···);
,查看一下,建立成功insert into 表名 values('数值1''数值2''···');
添加数据grant all privileges on 数据库名.* to 用户名@localhost identified by '密码';
,更新权限flush privileges;
并退出sudo apt-get install php
安装在工做目录下编写测试文件mysql
<?php include($_GET["a"]); ?>
在网页输入同户名和密码,能够看到成功链接到数据库
linux
SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认做正常SQL指令后正常执行,可能实现对后台数据库进行各类操做,甚至形成破坏后台数据库等严重后果。git
'or 1=1 --
而且提交,能够看到链接成功。这是由于此时查询语句为select * from users where name='' or 1=1 --'and password='1';
而“--”在MySQL表明注释,查询语句实际为select * from users where name='' or 1=1
1=1为永真式,则这个条件恒成立,所以数据库不会报错if ($result = $mysqli->query($query_str))
是不容许输入多条查询语句的,现实生活中也应该是不容许的,但这里为了实验咱们须要代码能容许输入多条查询语句。if ($result = $mysqli->multi_query($query_str))
,在登陆界面输入';insert into user values('hhh','ccc');--
能够看到虽然登陆失败,但咱们已经在表中插入了一个新用户XSS就是在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行。web
<img src="4.png" />
,注入成功输入<a href="text.txt">open test</a>
若存放网页的文件夹下有一个“test.txt”,咱们就能够直接打开了
sql
一开始我一直没有显示图片,发现是由于我一开始的代码中并无直接将网页提交的用户名显示出来,因此JavaScript的代码没法执行。也就是说,要想抵御XSS攻击,最好是设计代码对数据进行一些处理而不是直接显示。
此次实验在本来的网页编程基础上增长了不少如php、数据库链接的功能,让咱们直观地体会到一个网站运行的过程当中参数的传递和应用,更明白网页攻击的原理与过程。作此次实验的过程当中想到了不少以前使用过的漏洞,要想作一个彻底安全的网页要考虑不少,数据库参数的链接、字符串等都要进行一些特殊的处理才能真正达到安全的须要。