表單就是網頁上的表格,能夠負責數據採集功能。例如輸入文本,密碼,進行選擇等等。php
首先開啓apache,同上個實驗同樣,西安關閉80端口,再開啓。html
能夠看到咱們用到的是80端口,接着對其apache進行測試,是否可用前端
輸入localhost:80。進入到了上節課咱們用到的網頁中。java
接下來進入咱們的編輯目錄 /var/www/html
mysql
新建一個wangxinwei2.html的文件,並對其進行編輯:web
寫一個簡單的網頁,其中有可輸入文字的框和可選框sql
在火狐瀏覽器中輸入localhost:80/wangxinwei2.html,打開該網頁。進入到了我剛編寫的網頁中。數據庫
我一共實現了三種html的表單動能,文本框的填寫,密碼的填寫,選項的選擇。apache
對於POST與GET的設定,這裏我先嚐試的是,POST。POST用以向服務器發送數據,按照放在form中的數據體,傳到action所指向URL。django
編寫一個PHP,其中的代碼含義爲,將網頁已經寫好的元素 username 和 password,傳到php的頁面中並顯示出來。
而後在html中的form方法裏,action="login.php"
測試:
成功
實驗步驟爲:
使用命令/etc/init.d/mysql start
打開mysql
服務
輸入mysql -u root -p
,這裏要注意「-」的輸入
根據提示輸入密碼,password,進入MySQL:
MySQL建表建庫
CREATE SCHEMA `庫表的名稱`; CREATE TABLE `庫表的名稱`.`users` ( `userid` INT NOT NULL COMMENT '', `username` VARCHAR(45) NULL COMMENT '', `password` VARCHAR(256) NULL COMMENT '', `enabled` VARCHAR(5) NULL COMMENT '', PRIMARY KEY (`userid`) COMMENT '');
輸入use 庫表名
使用剛建的庫表。
輸入insert into users(userid,username,password,enabled) values(ID號,'用戶id',password("用戶密碼"),"TRUE");
添加新用戶。
輸入show databases;
,查看新建庫表的信息
前端網頁直接用上面編寫好的表單,用POST推上去的。名稱爲haha.html
接下來咱們須要作的就是編寫一個後臺鏈接到數據庫,實現從數據庫中調用數據,來驗證用戶輸入的用戶名和密碼是否爲已註冊的。
我編寫的PHP代碼爲:
<?php $uername=($_POST["username"]); $password=($_POST["password"]); echo $username; $query_str="SELECT * FROM users WHERE username='{$username}' and password=password('{$password}');"; $mysqli = new mysqli("127.0.0.1", "root", "20155317", "5317WXW"); /* 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> Wellcome login Mr/Mrs:{$uname} <br> "; } else { echo "<br> login failed!!!! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
編輯好前端wangxinwei2.html和後臺以後,用火狐瀏覽器打開前端,並輸入用戶名和密碼:
先輸入一個錯誤的:
很顯然登陸失敗:
輸入正確的用戶名和密碼以後,成功登陸:
SQL注入
,就是把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令
作一個簡單的SQL注入,就是簡單地將命令輸入用戶名框。
輸入' or 1=1#
根據咱們編寫的php代碼,SQL語句就會變爲:
select * from users where username='' or 1=1#' and password=password(XXX);
永遠爲真,就能夠直接登陸。
登陸成功
用於插入的用戶名爲"2222",密碼爲 20155317
因此用到的語句就是:
';insert into users(username,password) values('22222',password("5317"));#
在用戶名框中輸入。
咱們查看一下數據庫:
注入成功
而後成功登陸了
跨站腳本攻擊是新型的「緩衝區溢出攻擊「
就是將惡意代碼例如jsp代碼植入到提供給其它用戶使用的頁面中。
這是咱們要用到的代碼,代碼的功能就是直接讀取/var/www/html
目錄下的圖片
而後咱們將測試的圖片拷到html目錄下
在火狐瀏覽器中測試:
實驗成功
本次的實驗我認爲有必定的難度,上學期在劉念老師的課中練習過網站的編寫,可是感受開始的時候遺忘度仍是比較大的,不過最終也完成了實驗,懂得了一些網站製做時候的漏洞,也是收穫頗多!