XOOPS Securilty flow

10
XOOPS Cu be and Security WeeklyCMS 6.25 at Microsoft Japan

description

How to keep your site safety

Transcript of XOOPS Securilty flow

Page 1: XOOPS Securilty flow

XOOPS Cube and Security

WeeklyCMS 6.25 at Microsoft Japan

Page 2: XOOPS Securilty flow

自己紹介 Yoshi Sakai

有限会社ブルームーン ソフト開発 代表取締役Bluemooninc.jp

XOOPS Cube YouTube Channel and SNSXoopscube.info

WeeklyCMS USTREAM TV Show

@bluemooninc

Guitar freak

Page 3: XOOPS Securilty flow

How to keepSecure CMS

Use ProtectorModule

CheckSourceCode

Use XOOPSFunction

CheckVulnerabilityInformation

Page 4: XOOPS Securilty flow

ProtectorModule

Guard your site

XSS

SQLInjection

DoS Attack

- 悪意あるクローラー(メール収集ボットなど)- システムグローバル変数汚染- セッションハイジャック- ヌルバイト攻撃- ディレクトリ遡り攻撃- いくつかの危険な CSRF (XOOPS 2.0.9.2Under)- Brute Force (パスワード総当たり)- 拡張子偽装画像ファイルアップロード ( すなわち、 IE Content-Type XSS)- 実行可能なファイルをアップロードする攻撃- XMLRPC 関連- コメント SPAM/ トラックバック SPAM等、あらゆる SPAM

Page 5: XOOPS Securilty flow

Check Source Code

foreach ($_POST as $key => $value){    $$key = $value;}foreach ($_GET as $key => $value){    $$key = $value;}

$hoge = isset($_GET[‘hoge’]) ? $_GET[‘hoge’] : 0;

 

Page 6: XOOPS Securilty flow

Check Source Code

DO NOT use foreach $_POST and $_GET 

$hoge = isset($_GET[‘hoge’]) ? Intval($_GET[‘hoge’]) : 0;

$hoge = isset($_GET[‘hoge’]) ? htmlspecialchars($_GET[‘hoge’], ENT_QUOTES) : “”;

 

Page 7: XOOPS Securilty flow

SQLInjection

// a good user's name$name = "timmy"; $query = "SELECT * FROM customers WHERE username = '$name'”;echo "Normal: " . $query . "<br />”;// user input that uses SQL Injection$name_bad = "' OR 1'"; // not a very safe one$query_bad = "SELECT * FROM customers WHERE username = '$name_bad'”;

$name_bad=addslashes($name_bad);

SELECT * FROM customers WHERE username = '' OR 1'' SELECT * FROM customers WHERE username = '\' OR 1\''

Page 8: XOOPS Securilty flow

MyTextSanitizer

class for HTML

$myts =& MyTextSanitizer::getInstance();

GET や POST で取得した文字列 (VARCHAR 型 ) を HTML 上に表示したい ⇒ makeTboxData4Preview()GET や POST で取得した文字列 (VARCHAR 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTboxData4PreviewInForm()GET や POST で取得した文字列 (TEXT 型 ) を HTML 上に表示したい ⇒ makeTareaData4Preview()GET や POST で取得した文字列 (TEXT 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTareaData4PreviewInForm()

Page 9: XOOPS Securilty flow

MyTextSanitizer

class for DBGET や POST で取得した文字列 (VARCHAR 型 ) を DB に格納したい ⇒ makeTboxData4Save()DB から取得した文字列 (VARCHAR 型 ) を HTML 上に表示したい ⇒ makeTboxData4Show()DB から取得した文字列 (VARCHAR 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTboxData4Edit()GET や POST で取得した文字列 (TEXT 型 ) を DB に格納したい ⇒ makeTareaData4Save()DB から取得した文字列 (TEXT 型 ) を HTML 上に表示したい ⇒ makeTareaData4Show()DB から取得した文字列 (TEXT 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTareaData4Edit()

Page 10: XOOPS Securilty flow

XOOPS

• http://xoopscube.jp/news• http://www.xoops.org/modules/news

Site

• http://www.ipa.go.jp/• http://jvn.jp/• http://secunia.com/

Book

• 体系的に学ぶ 安全な Web アプリケーションの作り方 脆弱性が生まれる原理と対策の実践

• PHPサイバーテロの技法―攻撃と防御の実際