安全URL功能


Secure URL functions?

我公司的网站刚刚被黑了,我现在正在格外小心地恢复网站。公司希望网站尽快上线,所以我没有足够的时间重新编码软件的漏洞,所以我在做了以下事情后恢复它:

  1. 禁用来自网站的所有输入表单。(基本上,对于所有表示action = someform.php的表单,我只是将服务器上的someform.php重命名为someform1.php,因此实际上没有任何东西进入数据库。我将处理PDO和防止SQL注入稍后)。
  2. 没有表单,没有$_POST输入要照顾,但仍然有$_GET。对于接受查询字符串的每个页面,我都对每个$_GET['']变量进行检查,并确保仅在它应该是数字时才处理它。如。if(isset($_GET['page_id']) && is_numeric($_GET['page_id'])) { /* do something */ }。黑客似乎是通过SQL注入突破的。
  3. 对于网站的另一部分(目前仅供公司员工访问),我将其设置为密码保护文件夹。我知道黑客仍然可以使用匿名FTP或使用其他方式进入,但我希望至少在最初避免SQL注入,因此我认为密码保护文件夹会有所帮助。
  4. 我现在很担心URL。我不确定它是否安全,它是一个双语网站,这就是它的发展方式(这部分代码是由以前的开发人员编写的,我真的不理解它):

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是否存在一些漏洞?或者到目前为止我还算安全吗?

一个提示/注意:关于您提到的SQL注入,请确保您随时随地使用http://php.net/manual/en/pdo.prepared-statements.php

关于更改语言(在会话中)。代码似乎是安全的,因为没有人可以注入或改变一些东西。

下行:

然而,我看到一个问题在你的URL建设。它使用base64_encode方法使URL"安全"。然而,任何人都可以解码它(因为它只是一个base64编码)。长期而言,您可以尝试使用一些对称加密,将生成的密钥存储在用户会话中。这样,没有人会使用为其他人生成的URL。

无论如何,在这种情况下改变语言是无害的。上述建议适用于真正需要保护的资源/操作。我的意思是只有授权的人可以访问它(而不仅仅是窃取的URL)。当然,还有其他方法可以保护您的站点。这只是一个实用的建议。