- 浏览: 13747325 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
关联:
征服 Ajax 应用程序的安全威胁
AJAX 跨域请求 - JSONP获取JSON数据
跨站脚本
在媒体的帮助下,跨站脚本(XSS)成为了大家关注的焦点,当然它是绝对应当关注的。XSS 是 web 应用中最常见的安全隐患,许多流行的开放源代码的 PHP 应用程序受到 XSS 隐患的困扰。
XSS 攻击发生在下面的情况下:
-
对于可获得用户信任的特定站点。
用户没有必要用很高的等级信任任何网站,但是浏览器需要。例如,当浏览器在请求中发送 cookie,则意味着信任目标网站。对于不同的网站,用户可能有不同的浏览行为或者不同的安全防范等级。
-
通常包含显示外部数据的网站。
有高风险的应用包含论坛、web 邮件以及任何会显示出来的聚合内容(如 RSS feeds)。
-
攻击者可控制的内容注入。
当外部数据没有很好的过滤时,可能会显示攻击者需要的内容。这意味着攻击者可以更改服务器上的代码。
这是如何发生的?如果显示一个从外部获得的没有很好过滤的内容,则会产生 XSS 安全隐患。外来数据不仅限于客户端的数据。同时也包含显示在 web 邮件上的电子邮件、广告条、聚合 blog 以及类似的东西。任何从外部获得的,不在代码中的信息都是外部数据,这意味着多数数据都是外部数据。
伪造跨站请求
忽略名字上的相似程度,伪造跨站请求(CSRF)是几乎完全相反的攻击方式。XSS 是利用用户对网站的信任展开攻击;CSRF 是利用网站对用户的信任展开攻击。CSRF 攻击更加危险,更少遇到(意味着对于开发者没有更多资料),并且比起 XSS 攻击更加难以防御。
CSRF 攻击发生在下面的情况下:
-
对于可获得网站信任的特定用户。
多数用户可能不被信任,但是 web 应用向用户提供特定的权限以便其登录进入应用程序是很普遍的。拥有很高的特权的用户往往都是受害者(事实上在自己不知道的情况下成为了同谋)。
-
通常网站信任用户的身份标识。用户的身份标识拥有着重要的地位。但是即便有安全的会话管理机制,CSRF 攻击仍然能够成功。而且事实上,对于这种情况 CSRF 攻击更加有效。
-
攻击者可随心所欲的执行 HTTP 请求。
在 CSRF 所有攻击方式中包含攻击者伪造一个看起来是其他用户发起的 HTTP 请求(事实上,跟踪一个用户发送的 HTTP 请求才是攻击者的目的)。有一部分技术可以用来完成这个,后面会演示一个使用特别技术的例子。
由于 CSRF 攻击包含伪造 HTTP 请求,熟悉底层 HTTP 协议就变得非常重要。
伪造跨站请求介绍
伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有:
伪造链接,引诱用户点击,或是让用户在不知情的情况下访问
伪造表单,引诱用户提交。表单可以是隐藏的,用图片或链接的形式伪装。
比较常见而且也很廉价的防范手段是在所有可能涉及用户写操作的表单中加入一个随机且变换频繁的字符串,然后在处理表单的时候对这个字符串进行检查。这个随机字符串如果和当前用户身份相关联的话,那么攻击者伪造请求会比较麻烦。
yahoo对付伪造跨站请求的办法是在表单里加入一个叫.crumb的随机串 ;而facebook也有类似的解决办法,它的表单里常常会有post_form_id和fb_dtsg。
实例:
<?php class Crumb { CONST SALT = "your-secret-salt"; static $ttl = 7200; static public function challenge($data) { return hash_hmac('md5', $data, self::SALT); } static public function issueCrumb($uid, $action = -1) { $i = ceil(time() / self::$ttl); return substr(self::challenge($i . $action . $uid), -12, 10); } static public function verifyCrumb($uid, $crumb, $action = -1) { $i = ceil(time() / self::$ttl); if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb || substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb) return true; return false; } } $uid = 112; if($_POST['submit'] == 'submit') echo Crumb::verifyCrumb($uid, $_POST['crumb']) ? 'good' : 'bad'; ?> <form method="post"> <input type="hidden" name="crumb" value="<?php echo Crumb::issueCrumb($uid)?>"> <input type="text" name="content"> <input type="submit" name="submit" value="submit"> </form>
参考:
PHP 安全指南 http://hhacker.com/files/200709/1/index.html
PHP 安全基础 http://www.97find.cn/PHP/
- Essential_PHP_Security_-PHP安全基础.zip (578.9 KB)
- 下载次数: 8
发表评论
-
PHP: 在类(class)中加载动态函数, 变量函数或半变量函数 variable function/method
2016-09-03 07:54 7185最终实例在下方 以前 ... -
MySQL入门 (七) : 储存引擎与资料型态
2016-09-03 07:49 45651 表格与储存引擎 表格(table)是资料库中用来储存 ... -
MySQL入门 (六) : 字元集与资料库
2016-09-03 07:47 45781 Character Set与Collation 任何 ... -
MySQL入门 (五) : CRUD 与资料维护
2016-09-03 07:46 54881 取得表格资讯 1.1 DESCRIBE指令 「 ... -
MySQL入门 (四) : JOIN 与UNION 查询
2016-09-03 07:42 45121 使用多个表格 在「world」资料库的「countr ... -
PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别
2016-08-31 12:07 5046$GLOBALS 是一个关联数组,每一个变量为一个 ... -
MySQL入门 (三) : 运算式与函式
2016-08-31 12:01 4392运算式(expressions)已经 ... -
MySQL入门 (二) : SELECT 基础查询
2016-08-31 11:56 46901 查询资料前的基本概念 1.1 表格、纪录 ... -
MySQL入门 (一) : 资料库概论与MySQL的安装
2016-08-31 11:51 44691. 储存与管理资料 储存与管理资料一直是资讯应用上最基本 ... -
MySQL入门 (九) : 子查询 Subquery
2016-08-30 02:26 44541 一个叙述中的查询叙述 子查询(subquery)是一 ... -
PHP: 用readonly取代disabled来获取input值 submit a disabled input in a form could not ge
2016-08-30 02:21 2718The form is like below; <f ... -
PHP7革新与性能优化
2016-08-30 02:20 2155有幸参与2015年的PHP技 ... -
Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
2016-08-18 06:03 3131对于SQL的Join,在学习起来可能是比较乱的。我们知道, ... -
Comet 反Ajax: 基于jQuery与PHP实现Ajax长轮询(LongPoll)
2016-08-18 06:00 1386传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上 ... -
PHP:ServerPush (Comet推送) 技术的探讨
2016-08-18 05:58 1048PHP中Push(推送)技术的探讨 [http://vi ... -
PHP: 手把手编写自己的 MVC 框架实例教程
2016-08-16 05:33 18221 什么是MVC MVC模式(Model-View-Con ... -
PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
2016-07-29 12:55 1760原文: PHP5: mysqli 插入, 查询, 更新 ... -
MongoDB 教程索引 (附有视频)
2016-07-27 10:54 756MongoDB 教程索引 MongoDB 教程一: ... -
Node.js 模块之Nimble流程控制
2016-07-18 12:59 1087NodeJS异步的特性有时候 ... -
Node.js web应用模块之Supervisor
2016-07-18 12:56 2335在开发或调试Node.js应 ...
相关推荐
Tomcat 防止跨站请求伪造(CSRF)机制浅析 在 Web 应用开发中,跨站请求伪造(CSRF)是一种常见的安全威胁。跨站请求伪造攻击是指攻击者诱骗受信任用户访问恶意网站,从而使得恶意网站能以用户身份对受信任网站执行...
因此,防止伪造跨站请求是Web应用安全的重要一环。 为了防范CSRF攻击,一种常见的方法是使用随机字符串验证。这种技术通常涉及在表单中添加一个与用户身份相关联的、随时间变化的随机字符串,即“CSRF Token”。当...
伪造跨站请求介绍 伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有: 伪造链接,引诱用户点击,或是让用户在不知情的情况下访问 伪造...
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络安全威胁,攻击者通过诱导用户在不知情的情况下执行非预期的操作,如修改账户设置、进行非法转账等。在这个"CSRF跨站请求伪造实例程序"中,我们将...
浅谈 ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法 本文档对 ASP.NET MVC 中防止跨站请求伪造(CSRF)攻击的实现方法进行了详细的探讨。首先,文章介绍了 CSRF 攻击的定义和历史,然后通过一个模拟的示例,...
- 这种方法可以有效地防止攻击者伪造请求。 **方案二:利用Session ID验证** - 在客户端的每个关键业务请求中添加一个从Cookie中获取的Session ID参数。 - 服务器端检查此参数与实际Session ID是否一致,如果不一致...
在IT行业中,跨站伪造(Cross-Site Request Forgery,简称CSRF)是一种常见的网络攻击方式,它利用用户的登录状态来执行非用户意愿的操作。针对这种情况,开发人员需要采取有效的防御措施,Spring框架为此提供了内置...
跨站请求伪造(Cross-Site Request Forgery,简称CSRF)是一种网络安全漏洞,攻击者通过诱导用户在未经许可的情况下执行非预期的操作,从而达到恶意目的。在PHP开发中,了解并防止这种攻击至关重要。 首先,我们...
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击方式,攻击者通过诱导用户在已登录的网站上执行非预期的操作。在这个PHP demo中,我们将深入理解CSRF攻击的原理,并探讨如何防范。 首先,让我们看...
锚点CMS 0.12.7版本中出现了一个严重的安全漏洞,即跨站请求伪造(CSRF)漏洞,其CVE编号为CVE-2020-23342。这个漏洞是公开披露的,并且可能已被安全研究人员或恶意行为者所知。 跨站请求伪造(CSRF)是一种攻击者...
在这个实验中,我们将探讨一个重要的安全问题——跨站请求伪造(Cross-Site Request Forgery, CSRF)攻击,这种攻击允许恶意用户在受害者不知情的情况下,利用其浏览器发起伪造的请求。通过这个实验,你可以了解CSRF...
74CMS v5.0.1后台跨站请求伪造漏洞CVE-2019-11374的详细解读如下: ### 漏洞概述 跨站请求伪造(Cross-site Request Forgery,简称CSRF)是一种常见的网络安全漏洞。该漏洞允许攻击者误导合法用户执行非预期的命令...
跨站点请求伪造(Cross-Site Request Forgery,简称 CSRF 或 XSRF)是一种网络攻击方式,它利用了用户浏览器已经存储的登录凭证,如Cookie,来执行非授权的操作。这种攻击常见于Web应用中,使得攻击者能够在用户不...
CSRF(Cross-Site Request Forgery,跨站请求伪造),是一种常见的安全攻击手段。在这种攻击中,攻击者利用受害者的身份(通常是通过受害者已登录状态下的Cookies)发起恶意请求。这些请求对于服务器而言是合法的,...