為了要示範安全的概念, 所以來寫些小範例. 絕對不是要幹壞事~~~ XDDD
先準備兩隻小程式, 做確認程式是否有抓到 COOKIE 值.
login.php (POST 到 login.php, login.php 會確認帳號/密碼, 然後寫 COOKIE值)
<?php
if ($_POST['username'] == 'admin' && $_POST['password'] == '1234') {
setcookie('u', 'admin');
header('Location: check_login.php');
} else {
echo 'failed';
}
?>
check_login.php (確認是否有 $_COOKIE['u'] 的值, 而且是否是 'admin', 來判斷是否已 Login)
<?php
if ($_COOKIE['u'] == 'admin') {
echo 'Login success.';
} else {
echo 'Login failed.';
}
?>
假設上述兩個檔案分別在 http://localhost/login.php / http://localhost/check_login.php, 所以就來寫下述程式, 送 POST 到 login.php, 再經由 check_login.php 做確認是否登入完成, 程式如下:
Function List
- resource setUrlCookie($url, $postdata)
- string getUrlContent($resource, $url)
使用方法
- getUrlContent(setUrlCookie($login_url, $postdata), $login_check_url);
setUrlCookie() 是 POST 送到 Login.php, 然後將 COOKIE 寫入 cookie.txt(或者可以用 tempnam() 產生一個唯一名字的檔案來儲存). 再用 getUrlContent() 去通過 COOKIE 驗證, 以取得網頁的資料.
照理說應該將上述 function 寫成一個 Class, 能方便管理 curl_init() 的 resource, 不過, 先暫時寫成 function, 應該較容易理解~
為甚麼要用 MIT License? 有什麼好處或壞處嗎??
沒什麼好處或壞處耶, 只是 MIT 很開放, 就這樣子而已~ 🙂
能否解釋一下這篇的安全性重點是在那邊呢?
有點不了解, 麻煩你了:)
示範給一般人知道, 只判斷 cookie 是不夠的....
還是會被灌票... XD
OK, 了解了~感謝!
只判斷cookie為什麼會不夠呢 ?
因為要獲取cookie還是得先判斷帳號密碼不是嗎?
就看你 cookie 的判斷法是如何囉?
如果只是 $_COOKIE['user'] = 'admin';, 那就可能被偽造~ 🙂
Thanks for demonstrating the concept of security. Definitely not a bad thing to do. essay