1.什麼是表單?javascript
表單是一個包含表單元素的區域,表單元素是容許用戶在表單中輸入信息的元素,表單在網頁中主要負責數據採集功能,一個表單有三個基本組成部分:表單標籤、表單域、表單按鈕。php
構成元素:html
表單標籤form:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法;前端
表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等;java
表單按鈕:包括提交按鈕、復位按鈕和通常按鈕,用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。mysql
2.瀏覽器能夠解析運行什麼語言?程序員
HTML(超文本標記語言)、XML(可擴展標記語言)、Python、PHP、JavaScript、ASP、etc.web
3.WebServer支持哪些動態語言?sql
JavaScript、ASP、PHP、Ruby等,ASP基於IIS WEB SERVER,是微軟的服務器端腳本技術,PHP基於APACHE WEB SERVER,在服務器端執行的嵌入HTML文檔的腳本語言。數據庫
Web前端:HTML基礎 javascipt基礎
Web後端:MySQL基礎 javascipt基礎
SQL注入 XSS攻擊測試
本次的web開發是基於Apache服務器進行的,能夠經過leafpad /etc/apache2/ports.conf指令來進行修改Apache使用的端口,使用指令apachectl start打開Apache服務,使用netstat -aptn查看一下端口占
Apache服務開啓後,在瀏覽器中輸入localhost:80進行查看:
以後cd var/www/html進入到Apache目錄下,leafpad test1.html新建一個含有表單的html,編寫一個簡單的登陸頁面,用html表單來進行登陸
<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="#" name="frmLogin" > <tr> <td>name</td> <td><input type="text" name="username" value="Your name" size="20" maxlength="20" /></td> <td> </td> <td> </td> </tr> <tr> <td>pwd</td> <td><input type="password" name="password" value="Your password" size="20" maxlength="20" /></td> <td> </td> <td> </td> </tr> <tr> <td><input type="checkbox" name="zlogin" value="1">autologin</td> </tr> <table> <tr> <td><input type="submit" name="login" value="login" /></td> <td><input type="reset" name="rs" value="reset" /></td> </tr> </table> </form> </table> </body> </html>
因爲尚未編跳轉後的頁面,因此在action屬性裏面填的是#,即返回當前頁面,以後在php學習上再插入動做,method是Post,出於安全性考慮,通常選用Post提交數據。
JavaScript是一種屬於網絡的腳本語言,已經被普遍用於Web應用開發,經常使用來爲網頁添加各式各樣的動態功能,爲用戶提供更流暢美觀的瀏覽效果,一般JavaScript腳本是經過嵌入在HTML中來實現自身的功能的。
用JavaScript來編寫一個驗證用戶名、密碼的規則,命名爲login_ttt.html,代碼以下
<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="#" name="frmLogin" > <tr> <td>name</td> <td><input type="text" name="username" value="Your name" size="20" maxlength="20" onfocus="if (this.value=='Your name') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td>pwd</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">loginauto</td> </tr> <table> <tr> <td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td> <td><input type="reset" name="rs" value="reset" /></td> </tr> </table> </form> </table> <script language="javascript"> function validateLogin(){ var sUserName = document.frmLogin.username.value ; var sPassword = document.frmLogin.password.value ; if ((sUserName =="") || (sUserName=="Your name")){ alert("enter ur name"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("enter ur pwd"); return false ; } } </script> </body> </html>
先輸入/etc/init.d/mysql start指令開啓mysql服務,輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL,注意分號結尾。
密碼修改:
輸入use mysql; 選擇mysql數據庫;
輸入update user set password=PASSWORD("新密碼") where user='root'; 修改密碼
輸入flush privileges; 更新權限
接着輸入quit退出MySQL,從新進入,使用新密碼登陸成功,說明修改爲功
正式開始: 使用create database 庫名;創建一個數據庫;
使用show databases;查看存在的數據庫;
使用use 庫名;使用建立的數據庫:
接着使用create table 表名 (字段設定列表);創建數據表
使用show tables查看存在的數據表:
使用insert into 表名 values('值1','值2','值3'...);插入數據
使用select * from 表名查詢表中的數據
PHP是一種通用開源腳本語言,語法吸取了C語言、Java和Perl的特色,主要適用於Web開發領域。它能夠比CGI或者Perl更快速地執行動態網頁。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多;PHP還能夠執行編譯後代碼,編譯能夠達到加密和優化代碼運行,使代碼運行更快。
cd /var/www/html目錄下新建一個PHP測試文件
<?php echo ($_GET["a"]); include($_GET["a"]); echo "This is lxm php test page!<br>"; ?>
瀏覽器打開localhost:80/login_ttt.php?a=/etc/passwd可看到/etc/passwd文件的內容
下面進行編寫登陸:
<?php $uname=($_GET["username"]); $pwd=($_GET["password"]); /* echo $uname; */ $query_str="SELECT * FROM users where username='{$uname}' and password='{$pwd}';"; /* echo "<br> {$query_str} <br>";*/ $mysqli = new mysqli("127.0.0.1", "root", "1213", "login_ttt"); /* 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(); ?>
127.0.0.1是本機地址,root是MySQL的用戶名,1213是我以前設置的登陸密碼,login_ttt是數據庫的庫名
先將以前編的登陸網頁的login_ttt.html代碼中form的action屬性由#改爲login.php,即登陸後跳轉到login.php,再localhost:80/login_ttt.html訪問connection OK
SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意的)SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。
在用戶名輸入框中輸入' or 1=1#,密碼隨意,這時候的合成後的SQL查詢語句爲select * from test1 where username='' or 1=1#' and password='',#至關於註釋符,會把後面的內容都註釋掉,而1=1是永真式,因此這個條件確定恆成立,因此可以成功登錄:
XSS攻擊:跨站腳本攻擊,爲不和層疊樣式表CSS的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。
XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。攻擊者利用XSS漏洞旁路掉訪問控制。這種類型的漏洞因爲被駭客用來編寫危害性更大的phishing攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。
咱們能夠進行一個簡單的測試,在用戶名輸入框中輸入1213讀取/var/www/html目錄下的圖片,點擊登陸後咱們能夠看到圖片:
此次試驗歷盡了千辛萬苦,本身裝了kali rolling Weekly 18,致使之前的mysql被替換成一個什麼鬼東西,致使一直沒作出來,簡直心態爆炸,後來換成2.0老版以後作了出來,本次試驗讓我知道了軟件仍是用爲穩定版比較好,不要亂用嚐鮮版,簡直是提坑了,此次是web實驗的第一次,有不少web相關的語言須要去學習,一時間的信息量仍是蠻大的。嗯。。。