2019年6月6日 星期四
使用X-Frame-Options避免蓋台與Clickjacking攻擊
何謂蓋台呢?
其實就是將網頁顯示在別人的網站,
至於Clickjacking,
其實就是惡意網站以雙層方式顯示,
上層為iframe為隱藏,
下層為欺騙使用者的顯示內容,
故意將上層的按鈕與下層的按鈕對齊,
使用者點擊其實是按到上層的隱藏按鈕
為了避免網站遭到惡意蓋台或者Clickjacking攻擊,
勢必要做一些防護措施,
而X-Frame-Options 就是其中的一種防治手段,
X-Frame-Options 限制了 iframe與物件的載入,
有三種設定
DENY
無論是誰都無法使用
SAMEORIGIN
只有同網域才能使用
ALLOW-FROM
只有指定網域才能使用
設定成功的話,
就能在瀏覽器主控台看到如下圖error訊息
各軟體語法不一樣,
底下就舉幾個常見的例子:
Apache :
Header always append X-Frame-Options SAMEORIGIN
Nginx :
add_header X-Frame-Options SAMEORIGIN;
.htaccess文件 :
Header set X-Frame-Options SAMEORIGIN
但並不是每個瀏覽器都支援ALLOW-FROM的,
比如Chrome就不支援,
就必須透過其他指令來阻擋iframe引用,
至於用什麼指令呢?
請待下回分解
2019年6月5日 星期三
Django資料庫基礎
Django為基於Python語言的網站框架,
其MTV架構讓前後端能夠更有效率地進行網站開發,
之前提到過Djano的視圖與URL,
也介紹過Django專案template模板範例教學,
當然少不了MTV架構中的Model了,
其實就是
Django資料庫基礎
Django是以Class類別建立Model,
藉由Model操作資料庫與資料表,
在Django的資料庫操作有幾個重要的步驟
1.
在model.py定義Class類別, 每一個Class類別視為一個資料表,
在Class類別中定義變數,這些變數就相當於資料表欄位,
2.
每當model.py檔案有更動,
就必須執行
python manage.py makemigrations app名稱
或者
python manage.py makemigrations
來產生Django與資料庫之間的資料檔,
此兩個命令的差異在於前者專為某個app做資料檔的產生,
後者針對整個專案的model產生資料檔
3.
最後以
python manage.py migrate
更新資料庫內容
底下為model.py範例
程式的最上方要匯入models套件,
在model.py建立的類別繼承於models.Model,
TextField則是在描述此欄位的格式多行輸入的字串資料,
常見格式有:
BooleanField:
用以表示布林值True , False
CharField:
用以表示單行字串資料
IntegerField:
用以表示整數資料
其他還有不同的欄位格式,
在此就不詳述,
各欄位可針對其特性不同,
加入各式不同的屬性,
比如
unique:
設定此欄位為唯一值
primary_key:
設定此欄位為主鍵
定義好model之後,
執行上述所說的
python manage.py makemigrations
與
python manage.py migrate
關於資料庫的定義就完成,
就能根據網站各功能做開發
2019年6月3日 星期一
Open edX的中文化(localization)
Open edX是功能強大的線上教學平台,
但是再強大的軟體,
如果沒有在地化,
始終就是不親民,
故今天要來教大家:
Open edX的中文化(localization)
以Ubuntu16.04為範例,
首先安裝transifex 的client客戶端,
Transifex為一個基於網路協作的翻譯平台,
Open edX也是其眾多的localization專案之一,
安裝指令為:
sudo apt-get install transifex-client
接著進到Open edX的虛擬環境中,
sudo -H -u edxapp bash
source /edx/app/edxapp/edxapp_env
cd /edx/app/edxapp/edx-platform
打開Open edX設定檔
conf/locale/config.yaml
找到zh-TW並將其前方的註解#號移除
執行
tx pull -l zh_TW
下載語言檔,
第一次進入系統會要求在home建立一個名為
.transifexrc的檔案,
在此範例應該為
/edx/app/edxapp/.transifexrc
內容應該為帳號登入資訊:
[https://www.transifex.com]
hostname = https://www.transifex.com
password = your_password
token = your_token
username = your_username
接著執行
paver i18n_fastgenerate
與
python manage.py lms compilejsi18n --settings=aws
產生翻譯檔案之後
再執行:
paver update_assets lms --settings=aws
更新assets
完畢以後,
重啟系統 lms
最後再到 lms 的admin管理後台找到
dark lang 模組,
加入
zh-TW
就能將系統中文化
如果第一次使用出現如圖示之time zone error
執行
mysql_tzinfo_to_sql /usr/share/zoneinfo | sed -e "s/Local time zone must be set--see zic manual page/local/" | mysql -u root mysql
就可修復MySQL的問題
訂閱:
文章 (Atom)




