server apache2 start
能夠打開Apache服務。在服務器輸入127.0.0.1,若能夠打開Apache網頁,則表明開啓成功javascript
使用cd /var/www/html
進入Apache目錄,新建一個含有表單的html文件php
<html> <head> <title>Login</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h2 align="center">Login</h2> <center> <form action="login" method="post"> <input placeholder="E-mail" name="Name" class="user" type="email"> <br> </br> <input placeholder="Password" name="Password" class="pass" type="password"> <br> </br> <input type="submit" value="Login"> </form> </center> </body> </html>
在瀏覽器中輸入/var/www/html/login.html
打開網頁html
這裏的method是POST能夠向服務器上傳遞數據前端
在原來的test1.html中加入一段JavaScript代碼,對客戶輸入的郵箱和密碼作判斷,代碼以下java
<html> <head> <title>Login</title> meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h2 align="center">Login</h2> <center> <form action="login" method="post" name="form_login"> <input placeholder="E-mail" name="Name" class="user" type="email" onfocus="if (this.value=='Your email') this.value='';" /> <br> </br> <input placeholder="Password" name="Password" class="pass" type="password" onfocus="if (this.value=='Your password') this.value='';"/> <br> </br> <input type="submit" value="Login" onClick="return validateLogin()"/> </form> </center> <script language="javascript"> function validateLogin(){ var sUserName = document.form_login.Name.value ; var sPassword = document.form_login.Password.value ; if ((sUserName =="") || (sUserName=="Your email")){ alert("User Email!"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("Password!"); return false ; } } </script> </body> </html>
/var/www/html/simple_form.html
打開以下網頁若是沒有寫郵箱或者密碼就提交,就會出現提示輸入
mysql
輸入/etc/init.d/mysql start
開啓MySQL:web
輸入musql -u -root -p
使用root權限進入,密碼是passwordsql
使用show databases;
查看數據庫基本信息數據庫
輸入use mysql;
選擇使用mysql數據庫apache
輸入select user, password, host from user;
查看當前用戶信息
輸入update user set password=PASSWORD("5205") where user='root';
修改密碼
輸入flush privileges;
,更新權限
exit
退出數據庫,使用新的密碼登陸create database lzj_5205;
創建數據庫use lzj_5205;
使用咱們建立的數據庫使用create table login(username VARCHAR(20),password VARCHAR(20));
創建數據庫表,並設置字段基本信息
使用show tables;
查看錶信息
使用insert into login values('20165205@qq.com','20165205');
插入數據
使用select * from login;
查詢表中的數據
添加新用戶grant select,insert,update,delete on lzj.* to lzj@localhost identified by "20165205";
增長新用戶後,exit
退出,而後使用新的用戶名和密碼進行登陸:
在/var/www/html
目錄下新建PHP測試文件
<?php echo ($_GET["a"]); include($_GET["a"]); echo "Hello word! This is my php test page!<br>"; ?>
瀏覽器網址欄中輸入127.0.0.1/phptest.php
,可看到文件的內容
也能夠在瀏覽器網址欄中輸入127.0.0.1/phptest.php?a=/etc/passwd
,可看到/etc/passwd文件的內容
127.0.0.1/login.php
,鏈接成功則顯示connection ok!
利用PHP和MySQL,結合以前編寫的登陸網頁進行登陸身份認證,修改後的login.php代碼以下:
<?php $uname=$_POST["Email"]; $pwd=$_POST["Password"]; echo $uname; $query_str="SELECT * FROM login where username='$uname' and password='$pwd';"; $mysqli = new mysqli("127.0.0.1", "lzj", "20165205", "lzj_login"); $query_str1="use lzj;"; /* 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_str1)) echo"<br>Success into database!"; echo$uname; if ($result = $mysqli->query($query_str)) { if ($result->num_rows > 0 ){ echo "<br> {$uname}:Welcome!!! <br> "; } else { echo "<br> login failed!!!! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
127.0.0.1/login.html
訪問本身的登陸界面輸入用戶名和密碼進行認證,成功登錄以下圖所示
' or 1=1#
,密碼任意輸入,可登錄成功經過學習,瞭解了網頁與數據庫的交互方式,也學習到了針對代碼的漏洞攻擊,經過寫入一個永真式而後將其餘信息註釋掉,來達到不論密碼輸入什麼都能登陸成功的一個效果,也讓我體會到了防範注入攻擊的重要性。