本文引用于:征途源碼論壇(www.zhengtuwl.com)-----專注各類免費(fèi)精品×××的平臺
創(chuàng)新互聯(lián)2013年至今,先為政和等服務(wù)建站,政和等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為政和企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
這個周花了點(diǎn)時間搗鼓公司內(nèi)網(wǎng)論壇,不幸發(fā)現(xiàn)原來搭建的 xss platform 掛了,于是重新找了一份代碼進(jìn)行搭建。
為什么選擇這個呢,主要是因?yàn)樽髡哂?Bootstrap 對xsser.me的默認(rèn)主題進(jìn)行了修改,看起來高大上了很多~(至于兼容移動端神馬的就算了吧0 0)
下載源碼后,照著作者寫的安裝說明進(jìn)行修改就好了:
修改config.php里面的數(shù)據(jù)庫連接字段,包括數(shù)據(jù)庫配置(用戶名、密碼、數(shù)據(jù)庫名)、網(wǎng)站 URL 路徑和偽靜態(tài)配置。
把根目錄下的xssplatform.sql導(dǎo)入到數(shù)據(jù)庫中。
在數(shù)據(jù)庫中執(zhí)行 SQL 語句,把數(shù)據(jù)庫中的域名改為自己的域名:
UPDATE oc_module SET code=REPLACE(code,'http://xsser.me','http://yourdomain/xss')
替換authtest.php中的域名為自己的域名。
首次注冊成功后,修改user表中用戶對應(yīng)的adminlevel為1,將自己定義為超級管理員,可以發(fā)送和管理邀請碼。
根據(jù) server 類型配置偽靜態(tài)文件:
Apache
RewriteRule ^([0-9a-zA-Z]{6})$ /index.php?do=code&urlKey=$1 [L]
RewriteRule ^do/auth/(\w+?)(/domain/([\w\.]+?))?$ /index.php?do=do&auth=$1&domain=$3 [L]
RewriteRule ^register/(.*?)$ /index.php?do=register&key=$1 [L]
RewriteRule ^register-validate/(.*?)$ /index.php?do=register&act=validate&key=$1 [L]
Nginx
rewrite "^/([0-9a-zA-Z]{6})$" /index.php?do=code&urlKey=$1 break;
rewrite "^/do/auth/(w+?)(/domain/([w.]+?))?$" /index.php?do=do&auth=$1&domain=$3 break;
rewrite "^/register/(.*?)$" /index.php?do=register&key=$1 break;
rewrite "^/register-validate/(.*?)$" /index.php?do=register&act=validate&key=$1 break;
rewrite "^/login$" /index.php?do=login break;
到這里xss platform就搭建完成了。
我在使用過程碰到的一些 bug,于是對源代碼進(jìn)行了一番修改。
1. 短地址接口部分失效
在項(xiàng)目代碼中有一個轉(zhuǎn)換短地址的功能,當(dāng)然原版的xsser.me是沒有的,是另外的作者集成進(jìn)來的。
代碼里提供t.cn和is.gd的短地址轉(zhuǎn)換,對應(yīng)函數(shù)在source/function.php中的第350行和357行。由于is.gd的 api 地址已經(jīng)失效,所以我決定把這一塊內(nèi)容去掉。
先刪掉頁面上展示的內(nèi)容,打開templates_c/%%4D^4D3^4D30CF2A%%project_viewcode.html.php,將下面代碼去掉:
_tpl_vars['shortShow1']; ?>
然后在source/project.php里面注釋下面兩行:
$shortUrl2=LongUrltoShortUrl2($longUrl);//短網(wǎng)址2$shortShow2=StripStr("");
2. 去掉JS地址后面的時間戳
JS 地址后面加入時間戳,是為了在修改 JS 代碼后,刷新對方瀏覽器中緩存的 JS。但在實(shí)際測試中感覺作用不是很大,一般代碼修改完刷新一下網(wǎng)頁出來的就是新代碼。所以我把 JS URL 中的時間戳去掉了。
在source/project.php里進(jìn)行下面的修改:
//$codeurl=URL_ROOT."/{$project[urlKey]}?".time();
$codeurl=URL_ROOT."/{$project[urlKey]}";
//$scriptShow1=StripStr("'\">
");
$scriptShow2=StripStr("");
3. HTML 部分優(yōu)化
代碼中部分 Javascript 和 CSS 資源都是通過國外 cdn 獲取的,有時候頁面 load 很久才出來,于是把文中引用的資源都改為本地,當(dāng)然改成國內(nèi) CDN 地址也可以。
在 Sublime Text 中對目錄進(jìn)行搜索,找出jquery-1.9.1.min.js和bootstrap.min.js引用的地方,然后修改為本地引用,文件放在themes/default里對應(yīng)的文件夾。
//修改為:
//修改為:
PS.注意修改后的代碼為兩行。
PPS.其實(shí)引用的 Javascript 文件最好放在
的最后,但這里需要手動找到所有的 Javascript 進(jìn)行修改,太麻煩了就沒做。4. 添加 cookie 復(fù)制功能
一般來說,打到對方 cookie 后,會借用EditThisCookie這個工具把 cookie 導(dǎo)入到 chrome 中。但document.cookie輸出的 cookie 不能直接導(dǎo)入,需要轉(zhuǎn)換成EditThisCookie規(guī)定的 JSON 格式。
源代碼中本身自帶了實(shí)現(xiàn)復(fù)制功能的 JS 代碼,但默認(rèn)是注釋掉的,因?yàn)闆]有完整實(shí)現(xiàn)。同時,這個復(fù)制只是把 JSON 化后的 cookie 通過alert()打印到屏幕上,當(dāng) cookie 內(nèi)容過多時,alert 窗口并不能展示所有的內(nèi)容。
于是我決定對這個功能進(jìn)行修改,在完成 JSON 格式化的同時,把 JSON 內(nèi)容放入到剪貼板中。
首先對原有 HTML 節(jié)點(diǎn)進(jìn)行修改,打開%%33^334^334DB811%%project_view.html.php ,找到下面內(nèi)容:
當(dāng)某一條記錄沒有l(wèi)ocation或者cookie值的時候,Copy()函數(shù)會報錯,所以要加一個判斷條件:
var table = $(obj).parent().parent();
var l = table.find("#location").text();
var c = table.find("#cookie").text();
var table = $("#"+obj).parent().parent();
var l = table.find("#location").text();
var c = table.find("#cookie").text();
if (l == "" || c == "") { return "";}
修改Copy()函數(shù)的返回形式:
alert(JSON.stringify(data));
return JSON.stringify(data);
為了實(shí)現(xiàn)讓 JSON 數(shù)據(jù)復(fù)制到粘貼板上,我們需要借助ZeroClipboard.js這個插件。下面是調(diào)用代碼:
ZeroClipboard.config( { swfPath: "'.$this->_tpl_vars['url']['themePath'].'/swf/ZeroClipboard.swf" } );
var client = new ZeroClipboard($(".CopyBtn"));client.on('copy', function(event)
{
var clipboard = event.clipboardData; clipboard.clearData();
clipboard.setData("text/plain", Copy(event.target.id));});client.on('aftercopy', function(event)
{
if (typeof(event.success['text/plain']) == "undefined")
{
alert("cookie復(fù)制失敗,請檢查cookie格式~");
}
else {
alert("cookie已復(fù)制到剪貼板,可以導(dǎo)入EditThisCookie啦~");
}
}
);
這樣就大功告成了~