php防攻击方法

 

更多答案 请参考 @如何有效防止XSS攻击/AJAX跨域攻击

我说下防止非法用户的一些常用手段吧

1 前端的js验证: 我认为js验证只是一种用户体验的提升,对普通用户群体的简单限制,所以后台必须要有相应的验证。。

2表单中的隐藏域 : 相信大家都遇到过这样的问题,如: 用户从 A 页面 点如 B 页面,B页面是个表单,这个表单中有个隐藏域,用来记录从A页面带来的数据(像id等),用户提交时 在后台修改,新增数据都是依赖这个隐藏域的值,如果这里不做好验证的话,很可能被用户修改隐藏域的值,从而导致垃圾数据。。 我见过一个商城,竟然用隐藏域记录订单信息,用firebug修改价钱后发现下订单的金额竟然是我修改的,好久没关注,不知道对这个问题修改了没有。。

对于以上问题,我一般的做法是 A 页面到B页面时 生成一个 值:

  1. [Math Processing Error]数据 .date('Ymdh')); //$数据 为要在B页面隐藏域的值

然后 在将这个生成的 key 也放入 B页面表单的 隐藏域中。
数据提交后, 用相同的加密顺序去加密在判断 如:

  1. MD5('FORMKEY' . [Math Processing Error]_POST['key']

我现在一般用这种方式,不知道大家还有没有更好的方式,请分享。。。。。。。

3 ajax :一般ajax请求后台验证比较少,还有最好限制 ajax请求的地址 不能通过浏览器直接访问,不要认为 ajax 请求方式为 post 就 比较安全。

一般我限制的方法为:

  1. isset([Math Processing Error]_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'

当然 X_REQUESTED_WITH 也可以伪造,至少多增加了一点验证。

首先分享一个以前用过的一个过滤:

  1. function check_str([Math Processing Error]isurl = false)
  2. {
  3. [Math Processing Error]string);
  4. [Math Processing Error]string);
  5. empty([Math Processing Error]string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);
  6. [Math Processing Error]string);
  7. [Math Processing Error]string);
  8. [Math Processing Error]string);
  9. return trim($string);
  10. }

下面截自:http://www.cnblogs.com/my37gs/archive/2011/12/07/2278697.html
1、 验证用户输入的任何数据,保证PHP代码的安全
这里有一个技巧就是使用白名单,所谓白名单就是说:我们要求用户的数据应该是这样的,例如我们要求用户的输入是一个数字,我们就只检验这个值是否是一个数字就行了,而不必检验他到底是什么——其实他有可能是个恶意脚本。

对于这个检验我们不能只在客户端的javascript进行,战地认为JS只是为了提高来访用户的体验而产生的,而不是验证的工具。因为任何一个来 访的用户都可能会,也有可能无意间就禁用了客户端脚本的执行,从而跳过这层验证。所以我们必须在PHP的服务器端程序上检验这些数据。

2、 保护数据库的安全——对即将运行于数据库的Sql语句进行安全性预处理。
任何时候都要对执行前的Mysql语句,进行mysql_real_escape_string操作——该函数的用法请参考PHP手册。诸多PHP的数据库抽象层例如ADODB都提供了类似的方法。

3、 不要依赖不该依赖的PHP设置——环境有时候不可靠
不依赖,magic_quotes_gpc=On,在程序编制的过程,尽量关闭这个配置选项,任何时候判断这个选项后再对用户输入的数据进行处理。切记——PHP v6 中将会删除这个选项。尽量在合适的时候使用addcslashes 系列函数——请参考手册

4、 验证数据来源,避免远程表单提交
不要使用$_SERVER['HTTP_REFERER']这个超级变量来检查数据的来源地址,一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据,尽可能利用Md5,或者rand等函数来产生一个令牌,验证来源的时候,验证这个令牌是否匹配。

5、 保护会话数据,特别是Cookies
Cookie是保存在用户的计算机上的,保存之后任何用户都有可能出于某种原因更改他,我们必须对敏感数据进行加密处理。Md5、sha1都是个的加密方法。

6、 利用htmlentities()预防XSS攻击
对用户可能输入脚本语言的地方的数据进行htmlentities()操,将多数可以产生程序错误的用户输入进行实体化。记住要遵循第一个习惯:在 Web 应用程序的名称、电子邮件地址、电话号码和帐单信息的输入中用白名单中的值验证输入数据。

PHP方面:
(1)htmlspecialchars:参数一是要转换的字符串,参数二是设置是否要转换单引号,双引号之类的,参数三是字符串编码设置。
本函数将特殊字符转成 HTML 的字符串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。
& (和) 转成 & 
" (双引号) 转成 " 
< (小于) 转成 &lt; 
> (大于) 转成 &gt; 
此函数只转换上面的特殊字符,并不会全部转换成 HTML 所定的 ASCII 转换。
(2)htmlentities:会将所有 string 的字符都转成 HTML 的特殊字集字符串。
(3)strip_tags:去掉 HTML 及 PHP 的标记。
(4)sql语句还要再加个mysql_real_escape_string();

php Filter 函数

php防攻击方法的更多相关文章

  1. linux上redis安装配置及其防漏洞配置及其攻击方法

    Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令:  yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...

  2. PHP禁止同一IP频繁访问以防止网站被防攻击或采集的代码

    PHP禁止同一IP频繁访问以防止网站被防攻击或采集的代码 <?php /* *通过禁止IP频繁访问防止网站被防攻击代码*design by www.scutephp.com*/header('C ...

  3. ADO.NET防止字符串攻击方法

    在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入班级值 --:代表后边内容都被注释掉了 防止SQL注入攻击方法: 再给命令发送SQL语句的时候分两次发送,把SQL语句拆成两块,用户输入的 ...

  4. ado.net 完整修改删除,攻击防攻击

    完整修改和删除:当你输入了要删除的用户名,先提示有没有此条数据 先查 后删/后改------------ using System; using System.Collections.Generic; ...

  5. 常见的HTTPS攻击方法

    0x00 背景 研究常见的https攻击方法 Beast crime breach,并针对https的特性提出一些安全部署https的建议. 针对于HTTPS的攻击,多存在于中间人攻击的环境中,主要是 ...

  6. boot+Xss防攻击的处理方案

    以下是boot+Xss防攻击的(解决处理JSON入参)处理方案,第二个亲测有效 https://www.jianshu.com/p/3e4b00b8ff3ahttps://www.jianshu.co ...

  7. laravel数据库迁移 和 路由防攻击

    命令:php  artisan  migrate 防攻击:

  8. Python爬虫防封杀方法集合

      Python爬虫防封杀方法集合     mrlevo520 2016.09.01 14:20* 阅读 2263喜欢 38       Python 2.7 IDE Pycharm 5.0.3 前言 ...

  9. Active Directory中获取域管理员权限的攻击方法

    Active Directory中获取域管理员权限的攻击方法         译:by  backlion 0x00 前言 攻击者可以通过多种方式在Active Directory中获得域管理员权限, ...

随机推荐

  1. SPI的通信试验 --verilog (从机-全双工)

    SPI的 有关知识参考FPGA作为主机的通信实验. 本实验中FPGA作为从机通过SPI与MCU等通信的试验,可以在时钟上升沿接收数据并且在时钟下降沿发送数据,模仿全双工模式.接收的 数据作为地址,通过 ...

  2. JUC回顾之-Semaphore底层实现和原理

    1.控制并发线程数的Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,保证合理的使用公共资源. 线程可以通过acquire()方法来获取信号量的 ...

  3. Codeigniter CRUD代码快速构建

    一个与数据库操作打交道的应用,必然涉及到数据的添加.修改.删除等操作.因此CRUD操作几乎成为每个后台管理站点的必备功能.数据库的复杂性,导致PHP操作代码也会有不少的冗余,因此,如果可以有工具自动生 ...

  4. CI当开启URL重写的时候,报错500 Internal Server Error

    Internal Server Error The server encountered an internal error or misconfiguration and was unable to ...

  5. Java Hour 25 Packages

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 25 Hours. Packages Programs are organiz ...

  6. Android SDK、ADT认识

    Android SDK: (software development kit)软件开发工具包. 包含一些实用的Android sdk api,供开发者使用,就像开发java程序需要的使用JDK一样. ...

  7. 铭飞MCMS内容管理系统完整开源版J2EE代码

    当前版本:4.6.0铭飞MS官网:http://ms.mingsoft.net官网同时提供一键运行版本下载,请步移官网....QQ交流群号1:221335098很多人说铭飞MCMS是大天朝国唯一完整开 ...

  8. SU Demos-02Filtering-02Subfilt

    巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑.这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国<无线电工程>期刊的一篇论文中提 ...

  9. 神、上帝以及老天爷[HDU2048]

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  10. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...