Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

PHP Captcha 大惡搞

Posted on 2008 年 4 月 19 日2021 年 3 月 12 日 By 日落 在〈PHP Captcha 大惡搞〉中有 4 則留言

自從上次改過別人的 PHP Captcha 以後,這次玩得更瘋了。

今天跟 scwu 聊過以後想出一堆鬼主意來當作 captcha 上面的文字,可以考慮的有注音文、火星文和一堆有的沒的符號。後來想整人所以決定讓大家動動頭腦,出點數學題目讓大家做,如加減乘除:

不過加減乘除對對電腦來說太簡單了,以後要試試看來點方程式求解,有必要來個微積分也行,不過這樣就得大費周章的請 LeTex 出來幫忙了。

上面的 captcha 我改名叫做「mathcha」,程式碼如下:

<?php
    $font_face = 'arialbd.ttf'; //font you want to use
    $width='80';
    $height='25';
    $font_size = $height * 0.65;

    $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
    $background_color = imagecolorallocate($image, 0, 0, 0);
    $text_color = imagecolorallocate($image, 255, 255, 255);
    $noise_color = imagecolorallocate($image, 150, 255, 150);

    //create dots
    for( $i=0; $i<($width*$height)/3; $i++ ) {
        imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
    }

    //print text
    $n1 = mt_rand(1,20);
    $n2 = mt_rand(1,20);
    $string = "$n1 + $n2";
    $textbox = imagettfbbox($font_size, 0, $font_face, $string) or die('Error in imagettfbbox function');
    $x = ($width - $textbox[4])/2;
    $y = ($height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_face , $string) or die('Error in imagettftext function');

    /* output captcha image to browser */
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    imagedestroy($image);

    $_SESSION['mathcha'] = $n1 + $n2;
?>

記得你把你用的字型和這個程式放在同一個目錄。

Tags:PHP, 程式設計

PHP avoid SQL Injection

Posted on 2008 年 1 月 28 日2021 年 3 月 12 日 By 日落 在〈PHP avoid SQL Injection〉中有 2 則留言

SQL Injection 是一個寫 PHP 時大家常常忘掉的問題,但是一忘掉就會讓駭客有機可乘。

用 PHP 做登入時,SQL 語法大概會長這樣:

   select * from member where ID = '$USER_ID' and password = '$PASSWORD'

其中錢字號的是 PHP 的變數。登入時使用者填「test」、密碼填「123」,則 SQL 語法會變成下面這樣:

   select * from member where ID = 'test' and password = '123'

不過萬一有人要惡作劇,使用者填「test」、密碼填「’ or ”=’」,則 SQL 語法就會變成下面這樣:

  select * from member where ID = 'test' and password = '' or ''=''

看出來了嗎?如果把顏色去掉,最後一個判斷式是「or ”=”」,而這個判斷永遠會成立,所以即使前面沒有密碼也有資料會被列出來。這是最簡單的 SQL Injection,如果駭客心狠手辣的話,還能夠將機密資料列出、修改資料,甚至直接將資料庫刪除,所以不小心不行。如果有興趣的話可以參考以下相關網頁:

資安論壇 :: 觀看文章 – SQL Injection之解決建議措施及相關資訊彙整
http://forum.icst.org.tw/phpBB2/viewtopic.php?t=4376

SQL Injection WhitePaper
http://www.spidynamics.com/whitepapers/WhitepaperSQLInjection.pdf

PHP 5 有提供 magic quote 會自動將單引號、雙引號加上反斜線,網路上也有寫好的程式可以使用,像是我之前寫的「PHP avoid SQL Injection 2」,但事實上這樣還是不夠的。

SQL 語法中,欄位的資料型態會有不同的語法,像說 SerialNumber = 123 和 UserName = ‘zero’,就有單引號的差別,如果 PHP 讀取欄位資料後沒有特別去注意資料型態,可能就會發生 SQL 語法中字串沒有使用引號的錯誤,丟出錯誤訊息一樣很危險。所以在開始使用變數時,最好做資料型態的轉換或是辨認,以免發生意想不到的狀況。

想要試試看自己的網頁有沒有上述的漏洞,可以使用 Parosproxy 這套漏洞檢測軟體做測試,他會再抓取所有可以使用的網頁連結以後,對每個網頁進行特定的檢測。

首先要先設定瀏覽器的 proxy 設定,讓瀏覽器透過 Paros 來上網,設定如下:

接下來把 Paros 啟動,然後讓瀏覽器瀏覽你準備要測試的網頁,這樣 Paros 就會抓到網頁位置,抓到以後就可以準備掃瞄。

在上面的清單中,選擇要掃瞄的網站以後,點選功能表的 Analyse -> Spider,抓取整個網站所有的超連結。

抓取後左下方應該會出現網站內的超連結列表,Paros 之後就針對這幾個連結進行漏洞測試。準備好開始測試後,點選 Analyse -> Scan 即可。

待掃瞄結束後,左下角 alert 頁籤中會顯示出你網站有漏洞的網頁,以及漏洞的類型,但是並不是有顯示就表示一定有漏洞,也不表示找不到漏洞就絕對安全,請自行判斷掃瞄結果。

掃瞄結束後,記得把瀏覽器的 proxy 設定改回來,不然 Paros 關掉以後就不能上網了。

Tags:PHP, 程式設計, 資訊安全

PHP 設計指導、技巧

Posted on 2007 年 12 月 28 日2021 年 3 月 12 日 By 日落 在〈PHP 設計指導、技巧〉中尚無留言

PHP Programming Tutorials, Tips and Scripts
http://dev.fyicenter.com/faq/php/

Tags:PHP, 分享, 程式設計

感謝 DB Demo 順利

Posted on 2007 年 12 月 27 日2021 年 3 月 12 日 By 日落 在〈感謝 DB Demo 順利〉中有 2 則留言

今天的大事,就是 DataBase 的期末專題 Demo。

因為我只會 PHP 所以寫小小的考古題系統,今天 Demo 還算順利只是網路很不穩定而已。雖然說小系統,不過我犧牲了一週的睡眠時間把操作和以前學到的技術放進去,目前做到檔案下載位置隱藏、Paros 測不到 SQL injection。不過搜尋功能作的自己很不滿意,之後可能在慢慢改吧。

Demo 後助教的評分是 8 + 10 + 9 + 9,辛苦總算沒有白費 ~”~

不過今天還是不能太早睡,人機介面還有二個 Demo,其中還有一個要做問卷調查,也就是說今年過年真的要守歲啦 XD

Tags:PHP, 生活雜記

在網頁中嵌入 FCKeditor by PHP

Posted on 2007 年 12 月 24 日2021 年 3 月 12 日 By 日落 在〈在網頁中嵌入 FCKeditor by PHP〉中尚無留言

網路上的所見即得編輯器真多,昨天為了讓使用者不用自己打 HTML 標籤,花了一些時間把 FCKeditor 嵌入網頁中使用,功能比我想像中的還要強大!不但基本該有的按鈕都有了,還支援復原、剪貼簿、圖片和檔案上傳、表格、排版,甚至還能編輯表單!連在網頁上面顯示的工具列也可以自訂按鈕功能和版面樣式!

功能強但是安裝卻很簡單,只要在 PHP 程式碼中也只要加入五行左右的程式碼就可以正常運作,不賴吧?

首先你必須先引用 FCKeditor 已經寫好的程式碼,裡面會宣告編輯器所用到的物件和物件屬性:require("fckeditor/fckeditor.php");
再來就可以宣告編輯器物件,並且對物件屬性做設定:

$oFCKeditor = new FCKeditor('FCKeditor1');
$oFCKeditor->BasePath = 'fckeditor/';
$oFCKeditor->Value = 'Default text in editor';

第一行 initialize 中的字串,是產生文字編輯區時編輯區的名稱,也就是 textarea 的 name 屬性,以上面的範例來說,後端要接收資料就要使用:$_POST[‘FCKeditor1’]。
第二行是設定 FCKeditor 程式所在位置,如果沒有設定好,會無法載入 Javascript 和 CSS 檔,到時候網頁會無法顯示。第三行則是文字編輯區預設會出現的文字。

最後在 <form></form> 中間加上:$oFCKeditor->Create();
這樣顯示出來大概會向這樣:

再來我們加入二個參數來設定編輯器預設的大小:

$oFCKeditor->Width = '100%';
$oFCKeditor->Height = '400';

如果你不喜歡預設的版面,FCKeditor 有提供 office2003 和 silver 的版面可以更換,只要加入版面路徑到參數裡面就可以了:
$oFCKeditor->Config['SkinPath'] = 'skins/office2003/';

當然 FCKeditor 的功能不只如此,其他功能在官方的部落格都有詳細的說明。

FCKeditor Wiki
http://wiki.fckeditor.net/FCKeditor

FCKeditor 官網
http://www.fckeditor.net/

Tags:PHP, 程式設計, 資訊學習

文章分頁

上一頁 1 ... 22 23 24 ... 26 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.