Skip to content

Zeroplex 生活隨筆

軟體開發和生活瑣事

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

標籤: 程式設計

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, 程式設計, 資訊安全

計概考題

Posted on 2008 年 1 月 8 日2021 年 3 月 12 日 By 日落 在〈計概考題〉中有 10 則留言
int a = 0;
int b = 1;
if ((a=1) || (b=2)) {
printf("Hello, a=%d, b=%d", a, b);
}
else {
printf("World! a=%d, b=%d", a, b);
}

令我出乎意料的,結果是「Hello, a=1, b=1」,也就是說「||」在第一個判斷成立以後不會執行第二個判斷。

不過,這題題目其實是要考你 if 必須注意不可將「==」打成「=」。但是既然是錯誤的程式碼,還要我們告訴他執行結果,我很想知道出題老師在想什麼。

Tags:程式設計

Use Latex in Doku in FreeBSD

Posted on 2008 年 1 月 1 日2021 年 3 月 12 日 By 日落 在〈Use Latex in Doku in FreeBSD〉中尚無留言

Necessary ports:/usr/ports/graphics/ImageMagick
/usr/ports/print/teTeX
/usr/ports/print/ghostscript-gpl
/usr/ports/print/dvips

Following the official wiki, install the plugins in the directory. It will be in dokuwiki/lib/plugins. After this, fix class.latexrender.php because the paht of the program is not the same as Linux system.

class.latexrender.php (line:36 – 39):var $_latex_path = "/usr/local/bin/latex";
var $_dvips_path = "/usr/local/bin/dvips";
var $_convert_path = "/usr/local/bin/convert";
var $_identify_path="/usr/local/bin/identify";

If Latex won’t work, try this way:
https://b2.zeroplex.tw/2009/02/use-latex-in-mediawiki-in-freebsd.html

Tags:程式設計, 網路架站

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, 分享, 程式設計

文章分頁

上一頁 1 ... 9 10 11 ... 15 下一頁

其他

關於我  (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 Raspberry Pi Ubuntu Unix Vim Web Windows XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


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