php攻防_php网站总是被攻击

hacker|
114

如何避免网站被攻击?

不管是中小型企业网站还是大型企业网站都会面临着被攻击的危险,如果没有一个专业的程序员维护,网站会经常性的出现很多问题,网页打开缓慢、延迟、打不开甚至死机,因此流失很多客户。不过面对网站攻击并不是束手无策而坐以待毙,网站被攻击恰恰说明网站存在安全漏洞,只要查缺补漏,加以防范,便可保持网站的正常运行。网站之所以存在漏洞,是因为电脑系统或网站程序不断被发觉新漏洞,不是很专业的程序员疏于防范,便给一些不法之徒带来可乘之机。为此,网站运维不是一个简单的事,需要程序员的专业技术、管理习惯、责任心息息相关。

网站被攻击的常见形式:

(一)网站网页被挂马:当我们打开网站网页时,会被浏览器或电脑安全管理软件提示,此网站存在风险、此网站被挂马等报告,是因为网页和根目录文件中被植入了js,当打开网页时,触发js的命令,自动执行含有木马的脚本或php文件,从而窃取用户的隐私数据。被攻击的网站往往是一些涉及虚拟货币或有交易性质的网站。

(二)网站网页中出现大量的黑链:网站的网页一般用户看着没有什么异常,但是在网站的源代码中,往往是在更底部,出现了大量的锚文本链接,而这些链接往往被隐藏起来,字体大小为0或极限便宜位置。被攻击的目的在于,一些黑客非法植入链接,来提高一些低权重网站的权重和流量而获取利益,而被攻击方的网站往往会被降权惩罚。被攻击的网站往往是一些存在一定搜索引擎权重和流量的网站。

(三)网站根目录中出现大量植入的网页:如果网站维护不及时,会发现网站收录突然暴增,而收录的内容都是非自身网站的内容,大多数是一些非法广告页面,诸如博彩、色情、游戏私服外挂等内容,我们检查服务器网站数据会发现大量植入的静态页。被攻击的网站广泛,特别是一些流量高的网站备受黑客青睐。

(四)网站网页打开自动跳转到其它网站页面:这种形式我们常常称之为非法桥页,在网页中植入的强制转的js,或入侵服务器,在iis中做了301重定向跳转,其目的在于黑客进行一些非法广告性或网站权重转移而从中获益。被攻击的对象往往是一些有权重、有流量的网站。

(五)网站数据库被植入新内容。网站数据被植入了一些新增加的内容,这些内容形式和网站其他数据看似正常,但是看时间日期,会发现内容往往比较集中,而并不是编辑人员添加的内容。这种网站往往是一些能够办理证件的网站,诸如职业资格证、毕业证等。黑客为一些非法客户在正规官网植入虚假职业信息,而从中获取高额利益。被攻击的网站往往是一些大学官网、教育部门网站或一些资质认定的网站。

(六)网站被攻击打不开会打开极为缓慢:网站网页经常打不开,或服务器无法远程连接,这种情况往往是由于企业竞争激烈,非法的竞争对手雇佣 *** 黑客,恶意攻击自己的网站程序和服务器,导致网站或服务器无法正常运行,诸如大量的DDoS攻击、CC攻击、直接破坏或删除网站数据。部分黑客存在心理扭曲、炫耀自己的能力进行恶意攻击。被攻击的网站往往是企业网站或一些维护水平较低存在大量安全漏洞的网站。

(七)网站和服务器密码被篡改:有时会发现网站和服务器的密码不正确,被篡改了。是因为黑客对存在漏洞的网站和服务器进行暴力破解,篡改了密码。其目的往往在于炫耀黑客技术能力,进行恶意的、非法的黑客技术操作。被攻击的网站为所有网站。

(八)网站数据库丢失或损坏:有时发现自己的网站可以正常打开,但是无法再继续更新程序和新添加内容。这种情况往往是一些缺乏职业道德的离职程序员或黑客,进行恶意的攻击网站。被攻击的网站为各类网站。

(九)网站域名DNS劫持:打开自己的网站,内容却不是自己的网站内容,检查服务器和网站程序均正常,这种情况我们ping网站ip到时候已经不是自己的服务器ip,这种情况往往存在域名DNS劫持。其目的在于恶意的攻击炫耀或广告利益。被攻击的网站为所有类网站。

(十)网站服务器运行缓慢,被植入蠕虫等病毒:有时候站长会发现网站运行更新或在服务器操作异常缓慢,我们查看服务器的进程管理会发现,有运行占据高CPU、高内存的进程。这是查杀木马,往往会查出蠕虫等病毒。其目的在于占据网站资源,或服务器自身被攻击入侵,作为一种“肉鸡”用来攻击其他人的平台。被攻击网站,往往是一些高性能、高带宽的服务器。

二、网站服务器如何运维:

(一)网站数据定期备份:定期备份网站数据可以用来恢复被攻击的网站,即便网站被攻击或误操作删除一些网站信息,可随时恢复。为此网站运维,网站备份才是硬道理。

(二)网站程序系统更新:网站程序和服务器系统定期更新使用的版本、补丁,可消除一些存在的安全漏洞,以防给黑客带来可趁之机。

(三)定期查杀网站病毒:定期查杀网站病毒可以防止黑客的进一步破话或窃取网站数据,也可以及时删除入侵的网站后门漏洞文件。

(四)网站文件权限设置:对网站服务器文件合理的设定权限,比如部分执行程序的重要文件应当取消写入或执行权限,可避免黑客篡改网站数据。

(五)网站域名开启https数据安全传输协议和cdn加速,开启https和cnd,可以更快的、安全的运行网站,可以隐藏自己的网站真实ip,一定程度上预防DDoS攻击、CC攻击、域名劫持等安全隐患。网站如何防御DDos攻击和CC攻击?

(六)可使用高仿服务器:高仿服务器具有高性能、高带宽、高防御的特点,在安全上、运行上自身具备一定维护的基础后盾,给后期维护带来了不少的方便,但是造价高昂,客户应当根据自己经济情况酌情考虑。

(七)定期更新管理密码:网站密码可被离职程序员记录或黑客入侵暴力破解获取,定期更新网站后台密码和远程服务器登陆密码可有效预防数据损失。

(八)定期查看网站日志:网站运行数据的记录都在网站日志里记载,开启并定期查看网站日志,清晰地了网站运行的轨迹,是网站维护的重要方式之一。

网站时常被攻击,如何才能制止?

1找一个网站 *** 人来快速删除非法信息。通常有三个地方受到攻击。一是网站后台受到攻击,二是网站程序受到攻击,三是数据库被SQL篡改和注入。清除后,立即修复网站的登录路径后台,后台账号和密码(强密码,条件允许,手机短信动态验证码优先),修改FTP账号和密码,以及SQL账号和密码。我们非常不建议使用SQL用户名直接默认根。

2.如果域名不再使用,你可以取消在管局网站的注册。有时可能是因为你的网站已经过期,但注册访问是正常的,所以这部分域名很容易以高价注册。此时,直接注销以记录访问权限与您的公司无关。对方的网站不会打开。当然,如果对方的网站连接到海外服务器,情况就不是这样了。

3.通过域名注册提供商和注册提供商报告界面进行报告。注册业务审查后,分析将自动中断。为了实现关网的目标

4.搜索引擎收集的信息可以提交给搜索引擎进行投诉处理。此时,搜索引擎可能会提示安全风险。如果该网站需要启用,它可以清除非法信息并提交申请风险警告以恢复。

PHP网站被攻击,url后面多了?siteId=5JHAav.xls然后就被跳到其他网站去了,这是为什么?

黑客篡改了网页,你先清理到恶意代码,然后部署护卫神高级安全,从根本上解决入侵、

分析网站被频繁攻击的原因以及怎样预防?

网站经常被黑的的根本原因主要有以下几点:

1、跨站脚本(XSS)

XSS漏洞是最普遍和最致命的 *** 应用软件安全漏洞,当一款应用软件将用户数据发送到不带认证或者不对内容进行编码的 *** 浏览器时容易发生。黑客可以利用浏览器中的恶意脚本获得用户的数据,破坏网站,插入有害内容,以及展开钓鱼式攻击和恶意攻击。

2、注入漏洞

当用户提供的数据被作为指令的一部分发送到转换器(将文本指令转换成可执行的机器指令)的时候,黑客会欺骗转换器。攻击者可以利用注入漏洞创建、读取、更新或者删除应用软件上的任意数据。在最坏的情况下,攻击者可以利用这些漏洞完全控制应用软件和底层系统,甚至绕过系统底层的防火墙。

3、恶意文件执行

黑客们可以远程执行代码、远程安装rootkits工具或者完全攻破一个系统。任何一款接受来自用户的文件名或者文件的 *** 应用软件都是存在漏洞的。漏洞可能是用PHP语言写的,PHP是 *** 开发过程中应用最普遍的一种脚本语言。

4、跨站指令伪造

这种攻击简单但破坏性强,它可以控制受害人的浏览器然后发送恶意指令到 *** 应用软件上。这种网站是很容易被攻击的,部分原因是因为它们是根据会话cookie或者“自动记忆”功能来授权指令的。各银行就是潜在的被攻击目标。

5、信息泄露和错误处理不当

各种应用软件产生并显示给用户看的错误信息对于黑客们来说也是有用的,那些信息可能将用户的隐私信息、软件的配置或者其他内部资料泄露出去。

6、不安全的认证和会话管理

如果应用软件不能自始至终地保护认证证书和会话标识,用户的管理员账户就会被攻破。应注意隐私侵犯和认证系统的基础原理并进行有效监控。

7、不安全的加密存储设备

虽然加密本身也是大部分 *** 应用软件中的一个重要组成部分,但是许多 *** 开发员没有对存储中的敏感数据进行加密。即便是现有的加密技术,其设计也是粗制滥造的。

8、不安全的通信

与第8种漏洞类似,这种漏洞出现的原因是因为在需要对包含敏感信息的通信进行保护时没有将 *** 流通的数据进行加密。攻击者们可以获得包括证书和敏感信息的传送在内的各种不受保护的会话内容。因此,PCI标准要求对 *** 上传输的信用卡信息进行加密。

PHP如何做好最基础的安全防范

PHP如何做好最基础的安全防范

php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,PHP如何做好最基础的安全防范呢?下面我为大家解答一下,希望能帮到您!

当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等。

   安全保护一般性要点

不相信表单

对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器。需要在服务器端进行验证,对每个php脚本验证传递到的数据,防止XSS攻击和SQL注入。

不相信用户

要假设你的网站接收的每一条数据都是存在恶意代码的,存在隐藏的威胁,要对每一条数据都进行清理

   关闭全局变量

在php.ini文件中进行以下配置:

register_globals = Off

如果这个配置选项打开之后,会出现很大的安全隐患。例如有一个process.php的脚本文件,会将接收到的数据插入到数据库,接收用户输入数据的表单可能如下:

input name="username" type ="text" size = "15" maxlength = "64"

这样,当提交数据到process.php之后,php会注册一个$username变量,将这个变量数据提交到process.php,同时对于任何POST或GET请求参数,都会设置这样的变量。如果不是显示进行初始化那么就会出现下面的问题:

?php

// Define $authorized = true only if user is authenticated

if

(authenticated_user()) {

$authorized = true;

}

?

此处,假设authenticated_user函数就是判断$authorized变量的值,如果开启了register_globals配置,那么任何用户都可以发送一个请求,来设置$authorized变量的值为任意值从而就能绕过这个验证。所有的这些提交数据都应该通过PHP预定义内置的全局数组来获取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量,默认的顺序是$_COOKIE、$_POST、$_GET。

推荐的安全配置选项

error_reporting设置为Off:不要暴露错误信息给用户,开发的时候可以设置为ON

safe_mode设置为Off

register_globals设置为Off

将以下函数禁用:system、exec、passthru、shell_exec、proc_open、popen

open_basedir设置为 /tmp ,这样可以让session信息有存储权限,同时设置单独的网站根目录expose_php设置为Offallow_url_fopen设置为Offallow_url_include设置为Off

SQL注入攻击

对于操作数据库的SQL语句,需要特别注意安全性,因为用户可能输入特定语句使得原有的SQL语句改变了功能。类似下面的例子:

$sql ="select * from pinfo where product = '$product'";

此时如果用户输入的$product参数为:'39'; DROP pinfo; SELECT 'FOO

那么最终SQL语句就变成了如下的`样子:

select product from pinfo where product = '39';

DROP pinfo;

SELECT 'FOO'

这样就会变成三条SQL语句,会造成pinfo表被删除,这样会造成严重的后果。这个问题可以简单的使用PHP的内置函数解决:

$sql = 'Select * from pinfo where product = '"' mysql_real_escape_string($product) . '"';

防止SQL注入攻击需要做好两件事:对输入的参数总是进行类型验证对单引号、双引号、反引号等特殊字符总是使用mysql_real_escape_string函数进行转义但是,这里根据开发经验,不要开启php的Magic Quotes,这个特性在php6中已经废除,总是自己在需要的时候进行转义。

防止基本的XSS攻击

XSS攻击不像其他攻击,这种攻击在客户端进行,最基本的XSS工具就是防止一段javascript脚本在用户待提交的表单页面,将用户提交的数据和cookie偷取过来。XSS工具比SQL注入更加难以防护,各大公司网站都被XSS攻击过,虽然这种攻击与php语言无关,但可以使用php来筛选用户数据达到保护用户数据的目的,这里主要使用的是对用户的数据进行过滤,一般过滤掉HTML标签,特别是a标签。下面是一个普通的过滤 *** :

function transform_HTML( $string , $length null) { // Helps prevent XSS attacks

// Remove dead space.

$string = trim( $string );

// Prevent potential Unicode codec problems.

$string = utf8_decode( $string );

// HTMLize HTML-specific characters.

$string = htmlentities( $string , ENT_NOQUOTES);

$string = str_replace ( "#" , "#" , $string );

$string = str_replace ( "%" , "%" , $string );

$length = intval ( $length );

if ( $length 0) {

$string = substr ( $string , 0, $length );

}return $string ;

}

这个函数将HTML的特殊字符转换为了HTML实体,浏览器在渲染这段文本的时候以纯文本形式显示。如bold会被显示为: BoldText 上述函数的核心就是htmlentities函数,这个函数将html特殊标签转换为html实体字符,这样可以过滤大部分的XSS攻击。但是对于有经验的XSS攻击者,有更加巧妙的办法进行攻击:将他们的恶意代码使用十六进制或者utf-8编码,而不是普通的ASCII文本,例如可以使用下面的方式进行:

   这样浏览器渲染的结果其实是:

a href = ""

SCRIPT Dosomethingmalicious

这样就达到了攻击的目的。为了防止这种情况,需要在transform_HTML函数的基础上再将#和%转换为他们对应的实体符号,同时加上了$length参数来限制提交的数据的更大长度。

   使用SafeHTML防止XSS攻击

上述关于XSS攻击的防护非常简单,但是不包含用户的所有标记,同时有上百种绕过过滤函数提交javascript代码的 *** ,也没有办法能完全阻止这个情况。目前,没有一个单一的脚本能保证不被攻击突破,但是总有相对来说防护程度更好的。一共有两个安全防护的方式:白名单和黑名单。其中白名单更加简单和有效。一种白名单解决方案就是SafeHTML,它足够智能能够识别有效的HTML,然后就可以去除任何危险的标签。这个需要基于HTMLSax包来进行解析。安装使用SafeHTML的 *** :

1、前往 下载最新的SafeHTML

2、将文件放入服务器的classes 目录,这个目录包含所有的SafeHTML和HTMLSax库

3、在自己的脚本中包含SafeHTML类文件

4、建立一个SafeHTML对象

5、使用parse *** 进行过滤

?php/* If you're storing the HTMLSax3.php in the /classes directory, along

with the safehtml.php script, define XML_HTMLSAX3 as a null string. */define(XML_HTMLSAX3, '' );// Include the class file.require_once ( 'classes/safehtml.php' );

// Define some sample bad code.

$data = This data would raise an alert

" ;// Create a safehtml object.$safehtml = new safehtml();// Parse and sanitize the data.$safe_data = $safehtml -parse( $data );// Display result. echo 'The sanitized data is ' . $safe_data ;

?

SafeHTML并不能完全防止XSS攻击,只是一个相对复杂的脚本来检验的方式。

使用单向HASH加密方式来保护数据

单向hash加密保证对每个用户的密码都是唯一的,而且不能被破译的,只有最终用户知道密码,系统也是不知道原始密码的。这样的一个好处是在系统被攻击后攻击者也无法知道原始密码数据。加密和Hash是不同的两个过程。与加密不同,Hash是无法被解密的,是单向的;同时两个不同的字符串可能会得到同一个hash值,并不能保证hash值的唯一性。MD5函数处理过的hash值基本不能被破解,但是总是有可能性的,而且网上也有MD5的hash字典。

使用mcrypt加密数据MD5 hash函数可以在可读的表单中显示数据,但是对于存储用户的信用卡信息的时候,需要进行加密处理后存储,并且需要之后进行解密。更好的 *** 是使用mcrypt模块,这个模块包含了超过30中加密方式来保证只有加密者才能解密数据。

?php$data = "Stuff you want encrypted" ;

$key = "Secret passphrase used to encrypt your data" ;

$cipher = "MCRYPT_SERPENT_256" $mode = "MCRYPT_MODE_CBC" ;function encrypt( $data, $key , cipher , $mode ) {// Encrypt datareturn (string) base64_encode ( mcrypt_encrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), $data , $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) ) );

}function decrypt( $data , $key ,$cipher , $mode ) {// Decrypt data

return (string) mcrypt_decrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), base64_decode ( $data ), $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) );

}?

mcrypt函数需要以下信息:

1、待加密数据

2、用来加密和解密数据的key

3、用户选择的加密数据的特定算法(cipher:

如 MCRYPT_TWOFISH192

,MCRYPT_SERPENT_256, MCRYPT_RC2

, MCRYPT_DES

, and MCRYPT_LOKI97

4、用来加密的模式

5、加密的种子,用来起始加密过程的数据,是一个额外的二进制数据用来初始化加密算法

6、加密key和种子的长度,使用mcrypt_get_key_size函数和mcrypt_get_block_size函数可以获取如果数据和key都被盗取,那么攻击者可以遍历ciphers寻找开行的方式即可,因此我们需要将加密的key进行MD5一次后保证安全性。同时由于mcrypt函数返回的加密数据是一个二进制数据,这样保存到数据库字段中会引起其他错误,使用了base64encode将这些数据转换为了十六进制数方便保存。

;

0条大神的评论

发表评论