私の会社の Web サイトがハッキングされたので、今、細心の注意を払って Web サイトを復元しています。同社はできるだけ早くサイトを立ち上げたいと考えているため、ソフトウェアの脆弱性を実際に再コーディングする時間がないため、次のことを行ってからサイトを復元しています。
- ウェブサイトからのすべての入力フォームを無効にします。(基本的に、サーバー上で名前を
action = someform.php
変更したと述べたすべてのフォームについて、実際にはデータベースに何も取得されないようにします。後で PDO と SQL インジェクションからの保護を扱います)。someform.php
someform1.php
- フォームが残っていないので、
$_POST
処理する入力はありませんが、まだあり$_GET
ます。クエリ文字列を受け取るすべてのページについて、すべての$_GET['']
変数をチェックし、数値の場合にのみ処理するようにしました。例えば。if(isset($_GET['page_id']) && is_numeric($_GET['page_id'])) { /* do something */ }
. ハッカーは、SQL インジェクションを使用して突破したようです。 - ウェブサイトの別のセクション (現時点では会社のスタッフのみがアクセス可能) で、パスワードで保護されたフォルダーにしました。ハッカーがまだ匿名 FTP を使用したり、他の方法で侵入したりする可能性があることは知っていますが、少なくとも最初は SQL インジェクションを回避したいと考えているため、パスワードで保護されたフォルダーが役立つと考えました。これは、既存の安全なログインの上にあります。
- 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経由でここにいくつかの脆弱性がありますか? それとも、これまでのところ合理的に保護されていますか?