Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Security course

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Security course

Avatar for mogumogu mogumi

mogumogu mogumi

May 14, 2019
Tweet

More Decks by mogumogu mogumi

Other Decks in Technology

Transcript

  1. SQLインジェクション 脆弱性のある実装 $query = "SELECT * FROM user WHERE id

    = ‘$uid’”; $uidに以下を入れてみると? •‘or ‘A’=‘A •‘; delete * from user where ‘a’=‘a
  2. CSRF(クロスサイト・リクエスト・フォージェリ) 脆弱性のある実装 (フロント側) <form action="commit.php" method="post"> <input type="hidden" name="new_name" value="脆弱

    太郎"> <input type=“hidden” name=“new_address” value=“東京都”> <input type="submit" name="commit" value="実行"> </form> (サーバ側) if( ! $_SESSION['authenticated'] ) { exit(); } update_userinfo( $_SESSION['uid'], $_POST['new_name'], $_POST['new_address']);
  3. 対策 修正後の実装 (サーバ側/token発行時) $csrf_token = get_csrf_token(); //ランダムな文字列を生成 $_SESSION['csrf_token'] = $csrf_token;

    (フロント側) <form action="commit.php" method="post"> <input type="hidden" name="new_name" value="脆弱 太郎"> <input type=“hidden” name=“new_address” value=“東京都"> <input type="hidden" name=”scrf_token" value=”<?=$csrf_token?>”> <input type="submit" name="commit" value="完了"> </form> (サーバ側/リクエスト受取時) if( ! $_SESSION['authenticated'] ) { exit(); } if($_POST[‘scrf_token’]!=$_SESSION['csrf_token']) { exit(); } update_userinfo($_SESSION['uid'],$_POST['new_name'], $_POST['new_address']);
  4. その他の攻撃など • OS コマンド・インジェクション • HTTP ヘッダ・インジェクション • クリックジャッキング •

    バッファオーバーフロー • Dos/DDos攻撃 • ゼロデイ攻撃 • バックドア • フィッシング • ディレクトリ・トラバーサル