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的問題