Skip to content

Zeroplex 生活隨筆

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

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

標籤: 程式設計

PHP avoid SQL injection 2

Posted on 2007 年 9 月 8 日2021 年 3 月 12 日 By 日落 在〈PHP avoid SQL injection 2〉中有 1 則留言

之前在網路上找到一個函式可以分辨 php.ini 是否有開啟 magic_quote 並且把傳入的字串做處理:

function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

不過因為一個表單的欄位絕對不只十幾個,有可能超過一百的欄位,所以每次用到一個欄位就要自己打一次 $variabal = quotes( $variable ) 實在很不方便。

我想偷懶,所以用 foreach 把 $_POST 和 $_GET 的值一次處理完丟到 $http_post 和 $http_get 中,只要程式執行前執行一次所有欄位就全部處理完了。

function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

foreach( $_POST as $key => $value ){
$http_post[$key] = quotes( $value );
}
foreach( $_GET as $key => $value ){
$http_get[$key] = quotes( $value );
}
Tags:PHP, 程式設計

用 PHP 隱藏檔案下載位置

Posted on 2007 年 8 月 27 日2021 年 3 月 12 日 By 日落 在〈用 PHP 隱藏檔案下載位置〉中尚無留言

很多網站都會怕大家知道檔案位置以後,開始隨便散步網址給大家盜連,這樣網站的流量馬上會爆掉。另外也有可能讓駭客找到漏洞上傳 Web Shell,並且開始遙控……。

後來玩 PHPWind 論壇的時候,發現論壇可以讓上傳的檔案名稱全部改掉,在下載的時候也看不到檔案在伺服器上面的位置,所以跑去看了一下原始碼是怎麼寫的。PHPWind 檔案下載的程式是寫成 function 放在 /job.php 裡面,找到下面這行:

elseif($action=='download')

他的確是用 header() 來做檔案連結,但是不是我想像中的 header(“Location: URL”),這樣其實瀏覽器還是可以看到檔案位置,他是用 header 讓瀏覽器知道之後傳的資料為檔案內容,讓瀏覽器把資料寫成檔案,然後由伺服器先讀檔案內容以後傳給瀏覽器。所以瀏覽器從頭到尾只知道要存檔時預設的檔名、檔案類型和檔案內容,完全不知道檔案在伺服器上的位址。下面是 job.php 負責檔案下載的程式片段:

header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()+31536000 ).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: '.$attachment.'; filename='.$name);
header('Content-type: '.$fileext);

if($attach_url && !file_exists("$attachdir/$attachurl") && function_exists('file_get_contents')){
$downcontent=file_get_contents($attach_url."/$attachurl");
}else{
$filesize = filesize($attachdir.'/'.$attachurl);
header('Content-Length: '.$filesize);
$downcontent=readover("$attachdir/$attachurl");
}
echo $downcontent;
exit;

稍微改了一下以後會變成下面這幾行:

header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: '.'attachment'.'; filename='.$file_name);
header('Content-type: '.$file_type);
header('Content-Length: '.filesize( $file_path_on_server ));
$downcontent=file_get_contents( $file_path_on_server );
echo $downcontent;

$file_nam:瀏覽器存檔時預設的檔案名稱
$file_type:檔案類型,檔案上傳時會顯示
$file_path_on_server:檔案在伺服器上真正的路徑

至於 header() 的設定細節我還沒摸清楚,header() 的資料很多,目前還沒整理出一個頭緒,弄清楚以後再來做筆記吧。

Tags:PHP, 程式設計, 網路架站

命名要小心

Posted on 2007 年 7 月 4 日2021 年 3 月 12 日 By 日落 在〈命名要小心〉中尚無留言

剛剛在幫人寫一個統計資料的網頁,要按照群組和物件編號來計數。

結果我居然腦殘的把群組命名為「group」,就是因為這個 group 害我 de-bug 花了二個小時。原來 MySQL 中 group 是關鍵字 (group by) ……… Orz

Tags:生活雜記, 程式設計

adodb.recordset & session

Posted on 2007 年 6 月 28 日2021 年 3 月 12 日 By 日落 在〈adodb.recordset & session〉中尚無留言

已經好幾次都是死在這邊,怪自己腦殘記不起來。

cs = "Provider=SQLOLEDB;Server=localhost;UID=miswu;PWD=miswu5418;DataBase=Digital_Service"
set cn = server.CreateObject("adodb.connection")
cn.open cs

set rs = server.CreateObject("adodb.recordset")
sql = "APPLY_CASE_96"
rs.open sql,cn,1,2

rs.addnew
rs("test") = session("test")
rs.update

rs.close
cn.close

上面這樣寫 IIS 會掛掉,而且還不給你錯誤訊息。最好是先把 session 放進一個變數裡面,然後再丟給 record set。

Tags:程式設計

pear Crypt_RSA error

Posted on 2007 年 5 月 16 日2021 年 3 月 12 日 By 日落 在〈pear Crypt_RSA error〉中有 2 則留言

今天用 pear 的 Crypt_RSA 套件想弄一個密碼機,結果手氣似乎不是很好。

$method = new Crypt_RSA();
$method->encrypt($string);

這時出現一個錯誤訊息:

Fatal error: Call to a member function getExponent() on a non-object in C:AppServphp5PEARCryptRSA.php on line 365

問題是出在套件的程式碼上面,意思是呼叫了一個非物件的函式。用錯誤訊息到網路上面,居然只有找到 big_int、gmp 的資料,其他的居然沒有相關的解決方法!

難道是我手氣真的很差,居然在 stable 版的程式遇到一個全世界不到十個人遇到的問題!?

ps. 找出解決方法再更新…….

Tags:程式設計

文章分頁

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


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