推 grassboy2 :耶逗…所以別人真的可以直接呼叫我php裡的fnc1()嗎? 02/07 00:22
→ grassboy2 :我不是怕人盜連…而是怕有安全性漏洞… 02/07 00:23
推 grassboy2 :有強者可以示範一下嗎@@a 呼叫crack.php裡的fnc1() 02/07 00:25
→ xam :雞同鴨講啊... 02/07 00:35
推 j87b0003 :....哈哈......目標不一樣 02/07 01:36
推 yanli2 :你自己程式裡面有動作會呼叫他的話 就可能辦到 02/07 01:52
→ HuangJC :如果程式很短,你能檢查完,就不會被盜連;但程式都愈寫 02/07 03:13
→ HuangJC :愈大,可能被另一個含入口的程式 include 到.. 02/07 03:13
→ HuangJC :不過像 PHP 這種超彈性,我覺得真是防不甚防.. 02/07 03:14
→ HuangJC :我自己的程式就是這樣呼叫的,因為我用了framework 02/07 03:15
→ HuangJC :有一堆自己不熟的東西在抓我的程式.. 02/07 03:15
推 ckmarkhsu :我還滿想知道要怎麼直接執行 crack.php 裡面的 fun1 02/07 03:57
應該說..怎麼被呼叫的點很難查
當我寫 C 時,我用搜尋;找函式名就可以糾出所有進入點
但當我寫 PHP 時,卻怎麼找都找不到;而函式還是被呼叫了
因為它是超彈性的 Parser 語法
(後來學了 Trace 工具,有改善一點了)
比如
$a='fun';
$b='f1';
$c= $a . $b; // 'funf1'
$c; //忘了語法,好像這樣就可以執行 funf1,但用搜尋器找不到 funf1 出現在哪裏
因為實在太難找出所有進入點了
所以你如果告訴我'怕被執行'
我就會去防..以防萬一
之前我剛進這板時就是在請教大家如何 Trace PHP 程式,找尋 function caller
上面的例子在我用的 framework,或網路上抓來現成可用的模組裏都有出現
其實要怎麼找呢?
function funf1()
{
//反正誰 call 我,就會進來嘛
show_stack(); //忘了指令,反正都進來了,
//那我要求 show function call stack 就好,就全都會顯示出來
}
※ 編輯: HuangJC 來自: 61.59.179.152 (02/07 05:00)
→ HuangJC :再補充一點,有類似 onerr 的萬用函式,當找不到函式就 02/07 05:08
→ HuangJC :執行它,然後才開始組合函式名稱;CakePHP 有用這招 02/07 05:08
→ HuangJC :所以它才可以組合出那麼多 function name 來.. 02/07 05:09
推 grassboy2 :感謝!有增廣見聞到… 02/07 10:41
→ weiyucsie :那就用private member function XD 02/07 14:44
→ HuangJC :private 是封裝,就是為了保護而生 :P ,但在PHP我不會 02/07 16:11
→ weiyucsie :用法差不多啦 相關寫法可以搜尋php oop5 02/07 21:29
→ HuangJC :class 內我會;我想要有 file static,一樣嗎? 02/07 23:20
→ weiyucsie :你說C的那種喔 XD 這我就沒什麼概念了 02/08 02:15
想到了,也許可以 unset
(我的語法都不精準..都是虛擬碼)
class C1
{
private:
$a;
}
$I=new C1;
$I->a; // 不允許存取,這種封裝是禁止外界直接穿透 class
但如果是檔案,也有這種需求
file1.php
function f1()
{
}
f1(); //執行 f1
file2.php
require "file1.php" //我希望含入 file1.php,當然也希望執行到 f1
f1(); //但是我希望 f1 功成身退,不要被外面有權限執行
同檔案內可見到 f1,但希望別的檔案無法見到 f1
沒記錯的話,這叫做 file static
不過這和變數一樣
php 的函式簡直就像變數(的生命週期)
我想,它也有對應的 unset
也許要求一下,它就在外面看不到了 XD
對於我在意的一些東西,會特別仔細的控制它的生命週期
這樣應該蠻好用的
※ 編輯: HuangJC 來自: 61.59.179.152 (02/08 03:58)
→ weiyucsie :不曉得函數可不可以 不過你寫到unset 02/08 15:11
→ weiyucsie :也許可以用create_function+heredoc來寫函數的定義XD 02/08 15:11
→ weiyucsie :php 5.3(目前應該沒正式release)有closure可以玩 02/08 15:14