理解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、數據庫鏈接的功能,讓咱們直觀地體會到一個網站運行的過程當中參數的傳遞和應用,更明白網頁攻擊的原理與過程。作此次實驗的過程當中想到了不少以前使用過的漏洞,要想作一個徹底安全的網頁要考慮不少,數據庫參數的鏈接、字符串等都要進行一些特殊的處理才能真正達到安全的須要。