php语言开发如何防止黑客-php安全攻击

文章介绍:

php有什么安全规则,有哪些?

php安全篇值过滤用户输入的人参数

规则 1:绝不要信任外部数据或输入

关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。

例如,下面的数据元素可以被认为是安全的,因为它们是在PHP中设置的。

复制代码 代码如下:

?php

$myUsername = 'tmyer';

$arrayUsers = array('tmyer', 'tom', 'tommy');define(”GREETING”, 'hello there' . $myUsername);?

但是,下面的数据元素都是有瑕疵的。

清单 2. 不安全、有瑕疵的代码

复制代码 代码如下:

?php

$myUsername = $_POST['username']; //tainted!

$arrayUsers = array($myUsername, 'tom', 'tommy'); //tainted!

define(”GREETING”, 'hello there' . $myUsername); //tainted!

?

为 什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的文件的恶意命令。您可能会问,“难道不能使用只接受字母 A-Z 的客户端(Javascrīpt)表单检验脚本来避免这种危险吗?”是的,这总是一个有好处的步骤,但是正如在后面会看到的,任何人都可以将任何表单下载 到自己的机器上,修改它,然后重新提交他们需要的任何内容。

解决方案很简单:必须对 $_POST['username'] 运行清理代码。如果不这么做,那么在使用 $myUsername 的任何其他时候(比如在数组或常量中),就可能污染这些对象。

对用户输入进行清理的一个简单方法是,使用正则表达式来处理它。在这个示例中,只希望接受字母。将字符串限制为特定数量的字符,或者要求所有字母都是小写的,这可能也是个好主意。

清单 3. 使用户输入变得安全

复制代码 代码如下:

?php

$myUsername = cleanInput($_POST['username']); //clean!

$arrayUsers = array($myUsername, 'tom', 'tommy'); //clean!

define(”GREETING”, 'hello there' . $myUsername); //clean!

function cleanInput($input){

$clean = strtolower($input);

$clean = preg_replace(”/[^a-z]/”, “”, $clean);$clean = substr($clean,0,12);

return $clean;

}

?

规则 2:禁用那些使安全性难以实施的 PHP 设置已经知道了不能信任用户输入,还应该知道不应该信任机器上配置 PHP 的方式。例如,要确保禁用 register_globals。如果启用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替换同名的 GET 或 POST 字符串。通过禁用这个设置,PHP 强迫您在正确的名称空间中引用正确的变量。要使用来自表单 POST 的变量,应该引用 $_POST['variable']。这样就不会将这个特定变量误会成 cookie、会话或 GET 变量。

规则 3:如果不能理解它,就不能保护它

一些开发人员使用奇怪的语法,或者将语句组织得很紧凑,形成简短但是含义模糊的代码。这种方式可能效率高,但是如果您不理解代码正在做什么,那么就无法决定如何保护它。

例如,您喜欢下面两段代码中的哪一段?

清单 4. 使代码容易得到保护

复制代码 代码如下:

?php

//obfuscated code

$input = (isset($_POST['username']) ? $_POST['username']:”);//unobfuscated code

$input = ”;

if (isset($_POST['username'])){

$input = $_POST['username'];

}else{

$input = ”;

}

?

在第二个比较清晰的代码段中,很容易看出 $input 是有瑕疵的,需要进行清理,然后才能安全地处理。

规则 4:“纵深防御” 是新的法宝

本教程将用示例来说明如何保护在线表单,同时在处理表单的 PHP 代码中采用必要的措施。同样,即使使用 PHP regex 来确保 GET 变量完全是数字的,仍然可以采取措施确保 SQL 查询使用转义的用户输入。

纵深防御不只是一种好思想,它可以确保您不会陷入严重的麻烦。

既然已经讨论了基本规则,现在就来研究第一种威胁:SQL 注入攻击。

防止 SQL 注入攻击

在 SQL 注入攻击 中,用户通过操纵表单或 GET 查询字符串,将信息添加到数据库查询中。例如,假设有一个简单的登录数据库。这个数据库中的每个记录都有一个用户名字段和一个密码字段。构建一个登录表单,让用户能够登录。

清单 5. 简单的登录表单

复制代码 代码如下:

html

head

titleLogin/title

/head

body

form action=”verify.php” method=”post”

plabel for='user'Username/label

input type='text' name='user' id='user'/

/p

plabel for='pw'Password/label

input type='password' name='pw' id='pw'/

/p

pinput type='submit' value='login'//p

/form

/body

/html

这个表单接受用户输入的用户名和密码,并将用户输入提交给名为 verify.php 的文件。在这个文件中,PHP 处理来自登录表单的数据,如下所示:

清单 6. 不安全的 PHP 表单处理代码

复制代码 代码如下:

?php

$okay = 0;

$username = $_POST['user'];

$pw = $_POST['pw'];

$sql = “select count(*) as ctr from users where username='”.$username.”' and password='”. $pw.”' limit 1″;$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){if ($data-ctr == 1){

//they're okay to enter the application!

$okay = 1;

}

}

if ($okay){

$_SESSION['loginokay'] = true;

header(”index.php”);

}else{

header(”login.php”);

}

?

这 段代码看起来没问题,对吗?世界各地成百(甚至成千)的 PHP/MySQL 站点都在使用这样的代码。它错在哪里?好,记住 “不能信任用户输入”。这里没有对来自用户的任何信息进行转义,因此使应用程序容易受到攻击。具体来说,可能会出现任何类型的 SQL 注入攻击。

例如,如果用户输入 foo 作为用户名,输入 ' or '1′='1 作为密码,那么实际上会将以下字符串传递给 PHP,然后将查询传递给 MySQL:

复制代码 代码如下:

?php

$sql = “select count(*) as ctr from users where username='foo' and password=” or '1′='1′ limit 1″;?

这个查询总是返回计数值 1,因此 PHP 会允许进行访问。通过在密码字符串的末尾注入某些恶意 SQL,黑客就能装扮成合法的用户。

解 决这个问题的办法是,将 PHP 的内置 mysql_real_escape_string() 函数用作任何用户输入的包装器。这个函数对字符串中的字符进行转义,使字符串不可能传递撇号等特殊字符并让 MySQL 根据特殊字符进行操作。清单 7 展示了带转义处理的代码。

清单 7. 安全的 PHP 表单处理代码

复制代码 代码如下:

?php

$okay = 0;

$username = $_POST['user'];

$pw = $_POST['pw'];

$sql = “select count(*) as ctr from users where username='”.mysql_real_escape_string($username).”' and password='”. mysql_real_escape_string($pw).”' limit 1″;$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){if ($data-ctr == 1){

//they're okay to enter the application!

$okay = 1;

}

}

if ($okay){

$_SESSION['loginokay'] = true;

header(”index.php”);

}else{

header(”login.php”);

}

?

使用 mysql_real_escape_string() 作为用户输入的包装器,就可以避免用户输入中的任何恶意 SQL 注入。如果用户尝试通过 SQL 注入传递畸形的密码,那么会将以下查询传递给数据库:

select count(*) as ctr from users where username='foo' and password='\' or \'1\'=\'1′ limit 1″数据库中没有任何东西与这样的密码匹配。仅仅采用一个简单的步骤,就堵住了 Web 应用程序中的一个大漏洞。这里得出的经验是,总是应该对 SQL 查询的用户输入进行转义。

但是,还有几个安全漏洞需要堵住。下一项是操纵 GET 变量。

防止用户操纵 GET 变量

在前一节中,防止了用户使用畸形的密码进行登录。如果您很聪明,应该应用您学到的方法,确保对 SQL 语句的所有用户输入进行转义。

但 是,用户现在已经安全地登录了。用户拥有有效的密码,并不意味着他将按照规则行事 —— 他有很多机会能够造成损害。例如,应用程序可能允许用户查看特殊的内容。所有链接指向 template.php?pid=33 或 template.php?pid=321 这样的位置。URL 中问号后面的部分称为查询字符串。因为查询字符串直接放在 URL 中,所以也称为 GET 查询字符串。

在 PHP 中,如果禁用了 register_globals,那么可以用 $_GET['pid'] 访问这个字符串。在 template.php 页面中,可能会执行与清单 8 相似的操作。

清单 8. 示例 template.php

复制代码 代码如下:

?php

$pid = $_GET['pid'];

//we create an object of a fictional class Page$obj = new Page;

$content = $obj-fetchPage($pid);

//and now we have a bunch of PHP that displays the page?

这 里有什么错吗?首先,这里隐含地相信来自浏览器的 GET 变量 pid 是安全的。这会怎么样呢?大多数用户没那么聪明,无法构造出语义攻击。但是,如果他们注意到浏览器的 URL 位置域中的 pid=33,就可能开始捣乱。如果他们输入另一个数字,那么可能没问题;但是如果输入别的东西,比如输入 SQL 命令或某个文件的名称(比如 /etc/passwd),或者搞别的恶作剧,比如输入长达 3,000 个字符的数值,那么会发生什么呢?

在这种情况下,要记住基本规则,不要信任用户输入。应用程序开发人员知道 template.php 接受的个人标识符(PID)应该是数字,所以可以使用 PHP 的 is_numeric()函数确保不接受非数字的 PID,如下所示:

清单 9. 使用 is_numeric() 来限制 GET 变量复制代码 代码如下:

?php

$pid = $_GET['pid'];

if (is_numeric($pid)){

//we create an object of a fictional class Page$obj = new Page;

$content = $obj-fetchPage($pid);

//and now we have a bunch of PHP that displays the page}else{

//didn't pass the is_numeric() test, do something else!

}

?

这个方法似乎是有效的,但是以下这些输入都能够轻松地通过 is_numeric() 的检查:

100 (有效)

100.1 (不应该有小数位)

+0123.45e6 (科学计数法 —— 不好)

0xff33669f (十六进制 —— 危险!危险!)那么,有安全意识的 PHP 开发人员应该怎么做呢?多年的经验表明,最好的做法是使用正则表达式来确保整个 GET 变量由数字组成,如下所示:

清单 10. 使用正则表达式限制 GET 变量

复制代码 代码如下:

?php

$pid = $_GET['pid'];

if (strlen($pid)){

if (!ereg(”^[0-9]+$”,$pid)){

//do something appropriate, like maybe logging them out or sending them back to home page}

}else{

//empty $pid, so send them back to the home page}

//we create an object of a fictional class Page, which is now//moderately protected from evil user input$obj = new Page;

$content = $obj-fetchPage($pid);

//and now we have a bunch of PHP that displays the page?

需 要做的只是使用 strlen() 检查变量的长度是否非零;如果是,就使用一个全数字正则表达式来确保数据元素是有效的。如果 PID 包含字母、斜线、点号或任何与十六进制相似的内容,那么这个例程捕获它并将页面从用户活动中屏蔽。如果看一下 Page 类幕后的情况,就会看到有安全意识的 PHP 开发人员已经对用户输入 $pid 进行了转义,从而保护了 fetchPage() 方法,如下所示:

清单 11. 对 fetchPage() 方法进行转义

复制代码 代码如下:

?php

class Page{

function fetchPage($pid){

$sql = “select pid,title,desc,kw,content,status from page where pid='”.mysql_real_escape_string($pid).”'”;}

}

?

您可能会问,“既然已经确保 PID 是数字,那么为什么还要进行转义?” 因为不知道在多少不同的上下文和情况中会使用 fetchPage() 方法。必须在调用这个方法的所有地方进行保护,而方法中的转义体现了纵深防御的意义。

如 果用户尝试输入非常长的数值,比如长达 1000 个字符,试图发起缓冲区溢出攻击,那么会发生什么呢?下一节更详细地讨论这个问题,但是目前可以添加另一个检查,确保输入的 PID 具有正确的长度。您知道数据库的 pid 字段的最大长度是 5 位,所以可以添加下面的检查。

清单 12. 使用正则表达式和长度检查来限制 GET 变量复制代码 代码如下:

?php

$pid = $_GET['pid'];

if (strlen($pid)){

if (!ereg(”^[0-9]+$”,$pid) strlen($pid) 5){//do something appropriate, like maybe logging them out or sending them back to home page}

} else {

//empty $pid, so send them back to the home page}

//we create an object of a fictional class Page, which is now//even more protected from evil user input$obj = new Page;

$content = $obj-fetchPage($pid);

//and now we have a bunch of PHP that displays the page?

现在,任何人都无法在数据库应用程序中塞进一个 5,000 位的数值 —— 至少在涉及 GET 字符串的地方不会有这种情况。想像一下黑客在试图突破您的应用程序而遭到挫折时咬牙切齿的样子吧!而且因为关闭了错误报告,黑客更难进行侦察。

缓冲区溢出攻击

缓冲区溢出攻击 试图使 PHP 应用程序中(或者更精确地说,在 Apache 或底层操作系统中)的内存分配缓冲区发生溢出。请记住,您可能是使用 PHP 这样的高级语言来编写 Web 应用程序,但是最终还是要调用 C(在 Apache 的情况下)。与大多数低级语言一样,C 对于内存分配有严格的规则。

缓冲区溢出攻击向缓冲区发送大量数据,使部分数据溢出到相邻的内存缓冲区,从而破坏缓冲区或者重写逻辑。这样就能够造成拒绝服务、破坏数据或者在远程服务器上执行恶意代码。

防止缓冲区溢出攻击的惟一方法是检查所有用户输入的长度。例如,如果有一个表单元素要求输入用户的名字,那么在这个域上添加值为 40 的 maxlength 属性,并在后端使用 substr() 进行检查。清单 13 给出表单和 PHP 代码的简短示例。

网站安全与防黑客攻击需要注意哪些问题?

2、查看源代码:发现网站代码最页头或最页尾被嵌入了比如script或者iframe这样的字符,说明被挂上了木马;

3、通过FTP或者登陆服务器查看文件的修改时间:一般来说,黑客要是修改了网站文件,那么改文件的修改的时间就会跟改变,如果某些文件的修改时间明显比其他文件要晚,而我们自己并没有改动过,那么说明这个文件已经被黑客修改过了,可能已经中毒或挂上了木马,查看源文件就可以知。

首先要明白网站被挂木马的原理,一般来说是由于网站本身采用的程序是来自网络免费程序,其中的代码和漏洞都为一些黑客所熟知,攻击起来易如反掌,尤其是一些asp程序。所以网站建设尽量少用网络上的免费程序搭建;黑客在找到漏洞之后就会上传黑客木马到网站中,这个木马具有删除整个网站,修改所有代码的功能,但大部分黑客会在源网站的代码中加入他们的一些木马和病毒文件,然后访问的人中毒成为他们的肉鸡,或者挂上他们客户的隐链,或者达到一些不为人知的目的。

在网站被攻击之后,首先先备份所有网站文件,防止黑客删除网站,然后查找到黑客修改过的文件,一一还原,最后找到黑客的攻击点,堵住漏洞,但是查找黑客的攻击点需要一点的技巧,通过查看网站某个时段的的访问日志就能找到蛛丝马迹,这个时间段就是你某个文件被黑客篡改的时间。

1、尽量不要使用网络上免费的网站程序,因为一有漏洞暴露,网站就很危险。

2、程序编写上注意过滤非法字符,尤其注意上次文件和往服务器写入文件的地方多注意,尽量选择PHP等非asp的程序语言来编写,因为大部分黑客对asp的漏洞和攻击烂熟于心,可以降低网站被挂马的几率和风险。

怎样预防黑客入侵电脑

在这个技巧中,你将学到:一个简单的网页毁损会显示出一个详尽的突发事件响应计划多么的有价值!

被黑掉的经验类似于得到了一个少的可怜的收入,至少,这是最近我从自己的一个网页被人涂改破坏后学习到的感受。

果真,我们的调查发现被毁损的服务器上运行着一个没有打补丁的PHP论坛程序,黑客使用PHP exploit留下了一条短的、友好的信息标明他曾经占领过这个领地。虽然这是一个相对较小的事件,但它强调了有一个有准备的、明智的突发事件响应计划是多么的重要。

有个谚语说的很对:不到危急时刻,没有人会看到一项策略的价值。

信息响应(IR)计划给出了我们的立即响应、调查分析和恢复的过程,它们就像在我们手中互相交叉的三环,为了保证其成功,我们必须做到以下几个方面:

服务器隔离

这是一台相当重要的服务器,因此我们必须保证其安装性,并将其从网络中隔离。我们在服务器和外部网络之间通过防火墙规则来拦截攻击行为,然后我们就可以关闭响应的交换机端口,将服务器隔离。一旦隔离完成,我们就可以暂停记录发现的时间,这将发现黑客以及黑客所进行的行为,这也是为法庭分析和可能的诉讼行为提供证据的重要步骤。

黑客跟踪

黑客没有删除日志,因此我们花很短的时间就发现黑客多次使用一个固定的脚本尝试攻击PHP。我们真正想知道的是黑客是否得到了root用户的权限,或者他使用此服务器作为垫脚石对其它系统进行攻击。对重要文件的CRC校验告诉我们,它们并没有被更改和损坏,在内存中也没有可疑的进程运行。我们检查了论坛程序供应商的站点,的确,在攻击发生前的一周,供应商已经发表了有关此漏洞的声明,并且已经推出了补丁程序。这就没有问题了――一个星期的时间对黑客来说已经足够了。

我们震惊于在我们的IDS日志中没有发现PHP攻击的证据,我们的IDS供应商告诉我们,在下一次计划中的签名更新之前,签名将有大约两星期的使用时间。也就使说,在漏洞和攻击被发现,和IDS签名变得可用之前,有三个星期的缺口。

响应和恢复

我们的事件响应策略是,不管事件的严重性如何(不留下冒险的机会),任何被破坏的机器都要重新再建。系统根据一般可接受的指南进行安全方面的设置和巩固,我们还通过漏洞扫描器扫描机器的弱点以检查我们的工作。当然,我们还通过攻击软件检测相似的机器。

总结教训

我们从此次事件中总结出了经验教训:确信你的系统管理员跟上了最新的补丁(每个月一次是不够的),并且经常查看日志(一周一次也远远不够)。安全管理员必须知道各台机器都安装了什么软件,以便他们能够提防相关的漏洞和弱点。不要依靠任何唯一的IDS供应商,因为签名对第一防御范围来说可能到达的太晚。考虑在面向公众的服务器上实施Tripwire(一个入侵检测系统),监视重要文件属性的改变。

最后,保持你的突发事件响应策略的实时性,以适应当前系统的要求。让大家知道在紧急状态下应该做什么,这样才能保证补救措施的顺利实行。

预防黑客十绝招

一、使用防病毒软件并且经常将其升级更新,从而使有破坏性的程序远离你的计算机。

二、不允许网上的商家为了便于你以后购物储存你的信用卡资料。

三、使用由数字和字母混排而成、难以被破译的口令密码,并且经常更换。

四、对不同的网站和程序,要使用不同口令,以防止被黑客破译。

五、使用最新版本的万维网浏览器软件、电子邮件软件以及其他程序。

六、只向有安全保证的网站发送信用卡号码,留意寻找浏览器底部显示的挂锁图示或钥匙形图标。

七、确认你要打交道的网站地址,留意你输入的地址,比如不要把ana-zon.com写成amozon.com。

八、使用有对cookie程序控制权的安全程序,cookie程序会把信息传送回网站。

九、如果你使用数字用户专线或是电缆调制解调器连接英特网,那就要安装防火墙软件,监视数据流动。

十、不要打开电子邮件的附件,除非你知道信息的来源。

自己用PHP开发的网站怎样才能安全些

php本身的安全性就很高,所以防止的就是sql高手对你的网站进行sql注入,一般php的网站问题都是这个,自己写代码的时候仔细检查代码,不要发生死循环和内存不够的问题,还有就是凡事涉及到用户操作数据库的都要有验证码。这样就差不多了吧。

PHP网站怎么sql注入?有没有破解防御的方法?

网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么最原始的静态的网站反而是最安全的。 今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入。

如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起:

Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法:

首先是对服务器的安全设置,这里主要是php+mysql的安全设置和linux主机的安全设置。对php+mysql注射的防范,首先将magic_quotes_gpc设置为On,display_errors设置为Off,如果id型,我们利用intval()将其转换成整数类型,如代码:

$id=intval($id);

mysql_query=”select *from example where articieid=’$id’”;或者这样写:mysql_query(”SELECT * FROM article WHERE articleid=”.intval($id).”")

如果是字符型就用addslashes()过滤一下,然后再过滤”%”和”_”如:

$search=addslashes($search);

$search=str_replace(“_”,”\_”,$search);

$search=str_replace(“%”,”\%”,$search);

当然也可以加php通用防注入代码:

/*************************

PHP通用防注入安全代码

说明:

判断传递的变量中是否含有非法字符

如$_POST、$_GET

功能:

防注入

**************************/

//要过滤的非法字符

$ArrFiltrate=array(”‘”,”;”,”union”);

//出错后要跳转的url,不填则默认前一页

$StrGoUrl=”";

//是否存在数组中的值

function FunStringExist($StrFiltrate,$ArrFiltrate){

foreach ($ArrFiltrate as $key=$value){

if (eregi($value,$StrFiltrate)){

return true;

}

}

return false;

}

//合并$_POST 和 $_GET

if(function_exists(array_merge)){

$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);

}else{

foreach($HTTP_POST_VARS as $key=$value){

$ArrPostAndGet[]=$value;

}

foreach($HTTP_GET_VARS as $key=$value){

$ArrPostAndGet[]=$value;

}

}

//验证开始

foreach($ArrPostAndGet as $key=$value){

if (FunStringExist($value,$ArrFiltrate)){

echo “alert(/”Neeao提示,非法字符/”);”;

if (empty($StrGoUrl)){

echo “history.go(-1);”;

}else{

echo “window.location=/”".$StrGoUrl.”/”;”;

}

exit;

}

}

?

/*************************

保存为checkpostandget.php

然后在每个php文件前加include(“checkpostandget.php“);即可

**************************/

另外将管理员用户名和密码都采取md5加密,这样就能有效地防止了php的注入。

还有服务器和mysql也要加强一些安全防范。

对于linux服务器的安全设置:

加密口令,使用“/usr/sbin/authconfig”工具打开密码的shadow功能,对password进行加密。

禁止访问重要文件,进入linux命令界面,在提示符下输入:

#chmod 600 /etc/inetd.conf //改变文件属性为600

#chattr +I /etc/inetd.conf //保证文件属主为root

#chattr –I /etc/inetd.conf // 对该文件的改变做限制

禁止任何用户通过su命令改变为root用户

在su配置文件即/etc/pam.d/目录下的开头添加下面两行:

Auth sufficient /lib/security/pam_rootok.so debug

Auth required /lib/security/pam_whell.so group=wheel

删除所有的特殊帐户

#userdel lp等等 删除用户

#groupdel lp等等 删除组

禁止不使用的suid/sgid程序

#find / -type f \(-perm -04000 - o –perm -02000 \) \-execls –lg {} \;

服务器端PHP脚本,怎样保证网站不被黑?

建站一段时间后总能听得到什么什么网站被挂马,什么网站被挂黑链。好像入侵挂马网站被黑什么的似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。

有条件建议找专业做网站安全的sine安全来做安全维护。

一:挂马预防措施:

1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。

2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛程

序,只要可以上传文件的asp都要进行身份认证!

3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。

4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。

 

5、要尽量保持程序是最新版本。

6、不要在网页上加注后台管理程序登陆页面的链接。

7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。

8、要时常备份数据库等重要文件。

9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!

10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。

11、定期对网站进行安全的检测,具体可以利用网上一些工具,如sinesafe网站挂马检测工具!

二:挂马恢复措施:

1.修改帐号密码

不管是商业或不是,初始密码多半都是admin。因此你接到网站程序第一件事情就是“修改帐号密码”。帐号

密码就不要在使用以前你习惯的,换点特别的。尽量将字母数字及符号一起。此外密码最好超过15位。尚若你使用

SQL的话应该使用特别点的帐号密码,不要在使用什么什么admin之类,否则很容易被入侵。

2.创建一个robots.txt

Robots能够有效的防范利用搜索引擎窃取信息的骇客。

3.修改后台文件

第一步:修改后台里的验证文件的名称。

第二步:修改conn.asp,防止非法下载,也可对数据库加密后在修改conn.asp。

第三步:修改ACESS数据库名称,越复杂越好,可以的话将数据所在目录的换一下。

4.限制登陆后台IP

此方法是最有效的,每位虚拟主机用户应该都有个功能。你的IP不固定的话就麻烦点每次改一下咯,安全第一嘛。

5.自定义404页面及自定义传送ASP错误信息

404能够让骇客批量查找你的后台一些重要文件及检查网页是否存在注入漏洞。

ASP错误嘛,可能会向不明来意者传送对方想要的信息。

6.慎重选择网站程序

注意一下网站程序是否本身存在漏洞,好坏你我心里该有把秤。

7.谨慎上传漏洞

据悉,上传漏洞往往是最简单也是最严重的,能够让黑客或骇客们轻松控制你的网站。

可以禁止上传或着限制上传的文件类型。不懂的话可以找你的网站程序提供商。

8. cookie 保护

登陆时尽量不要去访问其他站点,以防止 cookie 泄密。切记退出时要点退出在关闭所有浏览器。

9.目录权限

请管理员设置好一些重要的目录权限,防止非正常的访问。如不要给上传目录执行脚本权限及不要给非上传目录给于写入权。

10.自我测试

如今在网上黑客工具一箩筐,不防找一些来测试下你的网站是否OK。

11.例行维护

a.定期备份数据。最好每日备份一次,下载了备份文件后应该及时删除主机上的备份文件。

b.定期更改数据库的名字及管理员帐密。

c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。

网站被挂马一般都是网站程序存在漏洞或者服务器安全性能不达标被不法黑客入侵攻击而挂马的。

网站被挂马是普遍存在现象然而也是每一个网站运营者的心腹之患。

您是否因为网站和服务器天天被入侵挂马等问题也曾有过想放弃的想法呢,您否也因为不太了解网站技术的问题而耽误了网站的运营,您是否也因为精心运营的网站反反复复被一些无聊的黑客入侵挂马感到徬彷且很无耐。有条件建议找专业做网站安全的sine安全来做安全维护。


原文链接:https://671922.com/19750.html

相关文章

访客
访客
发布于 2022-07-12 19:04:20  回复
挂马,什么网站被挂黑链。好像入侵挂马网站被黑什么的似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。有条件建议找专业做网站安全的sine安全来做安全维护
访客
访客
发布于 2022-07-13 00:06:56  回复
不被黑?建站一段时间后总能听得到什么什么网站被挂马,什么网站被挂黑链。好像入侵挂马网站被黑什么的似乎是件很简单的事情。其实,入侵不简单,简单的是你的网站的必要安全措施并未做好。有条件建议找专业做网站安全的sine安全来
访客
访客
发布于 2022-07-12 23:00:06  回复
sending them back to home page}} else {//empty $pid, so send them back to the hom
访客
访客
发布于 2022-07-12 23:34:19  回复
)){if (!ereg(”^[0-9]+$”,$pid)){//do something appropriate, like maybe logging them out or sending them back to home page}}else{//empty $pi
访客
访客
发布于 2022-07-12 22:51:52  回复
份文件。 b.定期更改数据库的名字及管理员帐密。 c.借WEB或FTP管理,查看所有目录体积,最后修改时间以及文件数,检查是文件是否有异常,以及查看是否有异常的账号。网站被挂马一般都是网站

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部