0

私の会社の Web サイトがハッキングされたので、今、細心の注意を払って Web サイトを復元しています。同社はできるだけ早くサイトを立ち上げたいと考えているため、ソフトウェアの脆弱性を実際に再コーディングする時間がないため、次のことを行ってからサイトを復元しています。

  1. ウェブサイトからのすべての入力フォームを無効にします。(基本的に、サーバー上で名前をaction = someform.php変更したと述べたすべてのフォームについて、実際にはデータベースに何も取得されないようにします。後で PDO と SQL インジェクションからの保護を扱います)。someform.phpsomeform1.php
  2. フォームが残っていないので、$_POST処理する入力はありませんが、まだあり$_GETます。クエリ文字列を受け取るすべてのページについて、すべての$_GET['']変数をチェックし、数値の場合にのみ処理するようにしました。例えば。if(isset($_GET['page_id']) && is_numeric($_GET['page_id'])) { /* do something */ }. ハッカーは、SQL インジェクションを使用して突破したようです。
  3. ウェブサイトの別のセクション (現時点では会社のスタッフのみがアクセス可能) で、パスワードで保護されたフォルダーにしました。ハッカーがまだ匿名 FTP を使用したり、他の方法で侵入したりする可能性があることは知っていますが、少なくとも最初は SQL インジェクションを回避したいと考えているため、パスワードで保護されたフォルダーが役立つと考えました。これは、既存の安全なログインの上にあります。
  4. URLが気になるところです。それがどれほど安全かどうかはわかりませんが、これはバイリンガルの Web サイトであり、これが進行中の方法です (コードのこの部分は前の開発者によるもので、私にはよくわかりません):

if($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == 'salman'){
    $url =zeej_dir.curPageName().'?'.$_SERVER["QUERY_STRING"];
} else {
    $url ='/'.curPageName().'?'.$_SERVER["QUERY_STRING"];
}
$change_url = "http://".$_SERVER['SERVER_NAME'].$url;


if($_SESSION['ln'] == 'en'){ 
        echo '<img src="'.getSiteUrl().'images/arabicicon.jpg" alt="Arabic" width="15" height="15" />';
        echo '<a href="'.getSiteUrl().'change_session.php?page_url='.base64_encode( $change_url ).'" class="top_frametext">Arabic</a>';
    } else {
        echo '<img src="'.getSiteUrl().'images/engicon.jpg" alt="English" width="15" height="15" />';
        echo '<a href="'.getSiteUrl().'change_session.php?page_url='.base64_encode( $change_url ).'" class="top_frametext">English</a>';
    }

そして、これはのコードですchange_session.php

@session_start();
$page_url = isset($_REQUEST['page_url'])?$_REQUEST['page_url']:'';

if($_SESSION['ln'] == 'en'){
    $_SESSION['ln'] ='ar';
} else {
    $_SESSION['ln'] ='en';
}

header("location: ".base64_decode($page_url));exit;

URL経由でここにいくつかの脆弱性がありますか? それとも、これまでのところ合理的に保護されていますか?

4

1 に答える 1