Re: [請益] PHP網站安全性
函式本來就是要被執行的
只是不想被'直接'執行
這種願望和不想被人從中間盜連網站一樣
要嘛你從大門口進來,那就歡迎
從中間 link 盜連,感覺好像別人網站很強大
像圖形網站被偷圖,音樂網站被偷歌一樣
你指這個吧..
方法之一是利用 session
從大門口進來的才設定變數
沒設的就趕出去
※ 引述《grassboy2 (活力花俏草兒仔政﹞O花俏)》之銘言:
: 借標題問一下…
: 其實我也有類似的問題…
: 如果…我某一個php檔下有一個函數fnc1
: 那…使用者有沒有辦法直接呼叫fnc1?
: 也就是不論我的php檔下面有沒有呼叫fnc1的敘述
: 使用者都可以直接執行降子…
: 例如:http://grassboy.twbbs.org/crack.php 的原始碼如下…
: <?
if ( !isset($logined) ) //這變數還得設在 session 裏,
exit; //google 'php session login' 有詳細介紹原理
: function fnc1()
: {
: echo "我是測試的函數";
: }
: ?>
: 你有辦法呼叫fnc1嗎?
: 有辦法直接呼叫fnc1嗎?
: 先感謝回答了m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.179.152
推
02/07 00:22, , 1F
02/07 00:22, 1F
→
02/07 00:23, , 2F
02/07 00:23, 2F
推
02/07 00:25, , 3F
02/07 00:25, 3F
→
02/07 00:35, , 4F
02/07 00:35, 4F
推
02/07 01:36, , 5F
02/07 01:36, 5F
推
02/07 01:52, , 6F
02/07 01:52, 6F
→
02/07 03:13, , 7F
02/07 03:13, 7F
→
02/07 03:13, , 8F
02/07 03:13, 8F
→
02/07 03:14, , 9F
02/07 03:14, 9F
→
02/07 03:15, , 10F
02/07 03:15, 10F
→
02/07 03:15, , 11F
02/07 03:15, 11F
推
02/07 03:57, , 12F
02/07 03:57, 12F
應該說..怎麼被呼叫的點很難查
當我寫 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)
→
02/07 05:08, , 13F
02/07 05:08, 13F
→
02/07 05:08, , 14F
02/07 05:08, 14F
→
02/07 05:09, , 15F
02/07 05:09, 15F
推
02/07 10:41, , 16F
02/07 10:41, 16F
→
02/07 14:44, , 17F
02/07 14:44, 17F
→
02/07 16:11, , 18F
02/07 16:11, 18F
→
02/07 21:29, , 19F
02/07 21:29, 19F
→
02/07 23:20, , 20F
02/07 23:20, 20F
→
02/08 02:15, , 21F
02/08 02:15, 21F
想到了,也許可以 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)
→
02/08 15:11, , 22F
02/08 15:11, 22F
→
02/08 15:11, , 23F
02/08 15:11, 23F
→
02/08 15:14, , 24F
02/08 15:14, 24F
→
02/08 15:14, , 25F
02/08 15:14, 25F
討論串 (同標題文章)