Top Banner
XOOPS Cu be and Security WeeklyCMS 6.25 at Microsoft Japan
10

XOOPS Securilty flow

Jun 29, 2015

Download

Technology

Yoshi Sakai

How to keep your site safety
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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サイバーテロの技法―攻撃と防御の実際