XOOPS Securilty flow
-
Upload
yoshi-sakai -
Category
Technology
-
view
739 -
download
2
description
Transcript of XOOPS Securilty flow
XOOPS Cube and Security
WeeklyCMS 6.25 at Microsoft Japan
自己紹介 Yoshi Sakai
有限会社ブルームーン ソフト開発 代表取締役Bluemooninc.jp
XOOPS Cube YouTube Channel and SNSXoopscube.info
WeeklyCMS USTREAM TV Show
@bluemooninc
Guitar freak
How to keepSecure CMS
Use ProtectorModule
CheckSourceCode
Use XOOPSFunction
CheckVulnerabilityInformation
ProtectorModule
Guard your site
XSS
SQLInjection
DoS Attack
- 悪意あるクローラー(メール収集ボットなど)- システムグローバル変数汚染- セッションハイジャック- ヌルバイト攻撃- ディレクトリ遡り攻撃- いくつかの危険な CSRF (XOOPS 2.0.9.2Under)- Brute Force (パスワード総当たり)- 拡張子偽装画像ファイルアップロード ( すなわち、 IE Content-Type XSS)- 実行可能なファイルをアップロードする攻撃- XMLRPC 関連- コメント SPAM/ トラックバック SPAM等、あらゆる SPAM
Check Source Code
foreach ($_POST as $key => $value){ $$key = $value;}foreach ($_GET as $key => $value){ $$key = $value;}
$hoge = isset($_GET[‘hoge’]) ? $_GET[‘hoge’] : 0;
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) : “”;
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\''
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()
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()
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サイバーテロの技法―攻撃と防御の実際