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

Security course

Security course

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攻撃 • ゼロデイ攻撃 • バックドア • フィッシング • ディレクトリ・トラバーサル