php 攻击_php网站攻击方式

hacker|
180

PHP网站要防哪几种常见方式攻击?

常见攻击方式:1、命令注入,2、eval注入,3、客户端脚本攻击,4、跨网站脚本攻击,5、SQL注入攻击,6、跨网站请求伪造攻击,7、Session 会话劫持,8、Session 固定攻击,9、HTTP响应拆分攻击,10、文件上传漏洞,11、目录穿越漏洞,12、远程文件包含攻击,13、动态函数注入攻击,14、URL攻击,15、表单提交欺骗攻击,16、HTTP请求欺骗攻击

php csrf攻击是通过浏览器还是直接攻击接口的

CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

跨站通常指的是针对浏览器来说的,如果通过其他方式直接调接口,不存在跨站一说,HTTP协议本身并没有站这一概念。伪造请求必然会将所有的条件都设置正确(如referrer和csrf token),没有任何限制,对后端来说,请求必然是一个正确的。

PHP代码网站如何防范SQL注入漏洞攻击建议分享

做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。

简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,进而可以取得数据库的访问权限。比如,黑客可以利用网站代码的漏洞,使用SQL注入的方式取得一个公司网站后台数据库里所有的数据信息。拿到数据库管理员登录用户名和密码后黑客可以自由修改数据库中的内容甚至删除该数据库。SQL注入也可以用来检验一个网站或应用的安全性。SQL注入的方式有很多种,但本文将只讨论最基本的原理,我们将以PHP和MySQL为例。本文的例子很简单,如果你使用其它语言理解起来也不会有难度,重点关注SQL命令即可。

一个简单的SQL注入攻击案例

假如我们有一个公司网站,在网站的后台数据库中保存了所有的客户数据等重要信息。假如网站登录页面的代码中有这样一条命令来读取用户信息。

$q

=

"SELECT

`id`

FROM

`users`

WHERE

`username`=

'

"

.$_GET['username'].

"

'

AND

`password`=

'

"

.$_GET['password'].

"

'

";?现在有一个黑客想攻击你的数据库,他会尝试在此登录页面的用户名的输入框中输入以下代码:

'

;

SHOW

TABLES;

点击登陆键,这个页面就会显示出数据库中的所有表。如果他现在使用下面这行命令:

';

DROP

TABLE

[table

name];

这样他就把一张表删除了!

防范SQL注入

-

使用mysql_real_escape_string()函数

在数据库操作的代码中用这个函数mysql_real_escape_string()可以将代码中特殊字符过滤掉,如引号等。如下例:

$q

=

"SELECT

`id`

FROM

`users`

WHERE

`username`=

'

"

.mysql_real_escape_string(

$_GET['username']

).

"

'

AND

`password`=

'

"

.mysql_real_escape_string(

$_GET['password']

).

"

'

";?防范SQL注入

-

使用mysql_query()函数

mysql_query()的特别是它将只执行SQL代码的第一条,而后面的并不会执行。回想在最前面的例子中,黑客通过代码来例后台执行了多条SQL命令,显示出了所有表的名称。所以mysql_query()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:

//connection

$database

=

mysql_connect("localhost",

"username","password");

//db

selection

$q

=

mysql_query("SELECT

`id`

FROM

`users`

WHERE

`username`=

'

"

.mysql_real_escape_string(

$_GET['username']

).

"

'

AND

`password`=

'

"

.mysql_real_escape_string(

$_GET['password']

).

"

'

",

$database);?除此之外,我们还可以在PHP代码中判断输入值的长度,或者专门用一个函数来检查输入的值。所以在接受用户输入值的地方一定要做好输入内容的过滤和检查。当然学习和了解最新的SQL注入方式也非常重要,这样才能做到有目的的防范。如果使用的是平台式的网站系统如Wordpress,要注意及时打上官方的补丁或升级到新的版本。

0条大神的评论

发表评论