我公司的网站刚刚被黑,我现在要格外小心地恢复网站。该公司希望该站点尽快启动,因此我没有足够的时间来实际重新编码该软件的漏洞,因此我在执行以下操作后将其恢复:
- 禁用网站上的所有输入表单。(基本上,对于所有说
action = someform.php
我只是someform.php
在服务器上重命名的表单,someform1.php
以便实际上没有任何东西进入数据库。稍后我将处理 PDO 和防止 SQL 注入的保护)。 - 没有留下任何表格,没有
$_POST
输入需要处理,但仍然有$_GET
. 对于每个接受查询字符串的页面,我都检查了每个$_GET['']
变量,并确保只在它应该是数字时才处理它。例如。if(isset($_GET['page_id']) && is_numeric($_GET['page_id'])) { /* do something */ }
. 黑客似乎已经使用 SQL 注入突破了。 - 对于网站的另一部分(目前只有公司员工可以访问),我将其设置为受密码保护的文件夹。我知道黑客仍然可以使用匿名 FTP 或使用其他方式进入,但我希望至少最初能避免 SQL 注入,所以我认为受密码保护的文件夹会有所帮助。这是在现有的安全登录之上。
- 我现在担心网址。我不确定它是否安全,它是一个双语网站,这就是它的发展方式(这部分代码是由以前的开发人员编写的,我不太明白):
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 的漏洞吗?或者到目前为止我是否得到了合理的保障?