Fortify租用-购买-价格-代理商
Fortify租用-购买-价格-代理商
Fortify租用-购买-价格-代理商
Fortify租用-购买-价格-代理商
Fortify租用-购买-价格-代理商
Fortify租用-购买-价格-代理商

Fortify租用-购买-价格-代理商

价格

订货量(0)

面议

≥1

联系人 汪洋

祺祴祷祷祸祹祸祷祹祵祴

发货地 陕西省西安市
立即询价 进入商铺
扫码查看

扫码查看

手机扫码 快速查看

在线客服

商品参数
|
商品介绍
|
联系方式
1 1
2 2
3 3
4 4
5 5
商品介绍

什么是fortify它又能干些什么?

答:fottify全名叫:Fortify SCA ,是HP的产品 ,是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。

2.它支持扫描多少种语言?

答:FortifySCA支持的21语言,分别是:

1. asp.net 2. VB.Net 3. c#.Net 4. ASP 5. VBscript 6. VS6 7.java 8.JSP 9.javascript 10. HTML 11. XML 12. C/C++ 13.PHP 14.T-SQL 15.PL/SQL 16. Action script 17. Object-C (iphone-2012/5) 18. ColdFusion5.0 - 选购 19. python -选购 20. COBOL - 选购 21.SAP-ABAP -选购

3.他是免费的吗?

答:不是,是收费的。当然网上也没有破解的。貌似他一个月收费10万。

4.如何使用?

安装fortify之后,打开

界面:

选择高级扫描

他问要不要更新? 我就选择No,因为这是我私人的, 我是在2015年7月份购买的试用期为1个月。 怕更新了就用不了了。如果你购买了可以选择YES。

选择之后出现如下界面

浏览意思是:扫描之后保存的结果保存在哪个路径。

然后点击下一步。

参数说明:

enable clean :把上一次的扫描结果清楚,除非换一个build ID,不然中间文件可能对下一次扫描产生影响。enable translation: 转换,把源码代码转换成nst文件-64: 是扫描64位的模式,sca默认扫描是32位模式。-Xmx4000m:4000M大概是4G,制定内存数-Xmx4G :也可以用G定义这个参数建议加-encoding: 定制编码,UTF-8比较全,工具解析代码的时候指定字符集转换的比较好,建议加,如果中文注释不加会是乱码。-diable-source-:rendering:不加载与漏洞无关的代码到审计平台上,不建议加,这样代码显示不全。

然后点击下一步

它说:这是一个J2EE Web应用

选择No (因为你扫的是PHP)

然后scan(开始扫描)

Always run in background 意思:总是在后台运行

run in background 意思:后台运行

cancel 意思 : 取消

Details 意思:细节

扫完之后:

none 代表其他 1个

A1 注入 7个

A3 xss 37个

A4 不安全的直接对象引用 35个

A6 敏感数据暴露 4个

A10 未验证的重定向和转发 2个

如果发现是英文的,想改成如下方法中文:

以下是官网提供的分析图:

分析漏洞:

none漏洞:

这是一个可变变量,按照中国人说法简称:“变量覆盖”。

讲一下这个漏洞的原理:

可变变量

$first ="hello";$hello ="world";echo $first." ".$$first;

结果是 hello world

$$first就是$hello,因为$first的值是hello

———————————但是在foreach 就不一样了—————————————————–

 $value) { //如果在foreach那就不一样了 echo $$key; //将$$区分开 然后$key 等于键 然后开始合并 比如打开http://www.com.com/demo.php?a=值 就变成了$a 因为$key的键是a 所以就变成了$a $$key = $value;//$a = 值 替换变量 }echo '
';echo $a;?>

A1 注入漏洞:

发现$c变量是由客户端进行GET请求控制的。

safe_replace函数过滤如下字符:

function safe_replace($string) {$string = str_replace('%20','',$string);$string = str_replace('%27','',$string);$string = str_replace('%2527','',$string);$string = str_replace('*','',$string);$string = str_replace('"','"',$string);$string = str_replace("'",'',$string);$string = str_replace('"','',$string);$string = str_replace(';','',$string);$string = str_replace('<','<',$string);$string = str_replace('>','>',$string);$string = str_replace("{",'',$string);$string = str_replace('}','',$string);$string = str_replace('//','',$string);return $string;}

include $c.".php"; 但是后面有个.php是拼接的。

但是如果 php版本小于5.3.40 可以采用空字节也就是%00的二进制视作字符串的结束,按照其他说法的话也就是截断。。。。。

A3 xss 漏洞

$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}";$query=$this->mysql->query($field_sql);

写入数据库的时候没有任何限制或者输出的时候没有做任何的过滤就直接输出导致造成了XSS。(我就不一一解释了)

A4 不安全的直接对象引用漏洞

文件上传次数未做策略,可导致攻击。

A6 敏感数据暴露漏洞:

A10 未验证的重定向和转发漏洞:

这里我就不去定位看谁使用这个函数了,懂点PHP的人相信都懂。。

3.2.原文:The catch block handles a broad swath of exceptions,
potentially trapping dissimilar issues or problems
that should not be dealt with at this point in the program..
翻译:这个捕捉异常的块可以处理所有的异常,潜在的陷入了在这段程序中不能处理的不同问题。
理解:如果捕捉exception,就不能让处理异常的逻辑细化,
也就是所有的异常都按照同样的逻辑处理是不行的。
13.3.EXPLANATION 解释
Multiple catch blocks can get ugly and repetitive,
but "condensing" catch blocks by catching a high-level class like Exception can obscure exceptions
that deserve special treatment or that should not be caught at this point in the program.
Catching an overly broad exception essentially defeats the purpose of Java's typed exceptions,
and can become particularly dangerous
if the program grows and begins to throw new types of exceptions.
The new exception types will not receive any attention.
多重的异常捕捉块可能会变得丑陋和重复的,
但是通过一个高层异常(比如Exception)"浓缩"的捕捉块将模糊异常,
这个异常应该有不同的处理,并且在程序的这个点上不能捕捉到。
捕捉一个过分广泛的异常将从本质上违背了Java对异常分类的目的,
如果程序修改并且增加一个新类型的异常,会变得特别的危险。
新异常类型将不会接受异常处理。
Example: The following code excerpt handles three types of exceptions in an identical fashion.
例如:下面的代码摘录以同样的方式处理三种异常。
  try {
    doExchange();
  }
  catch (IOException e) {
    logger.error("doExchange failed", e);
  }
  catch (InvocationTargetException e) {
    logger.error("doExchange failed", e);
  }
  catch (SQLException e) {
    logger.error("doExchange failed", e);
  }
At first blush, it may seem preferable to deal with these exceptions in a single catch block,
as follows:
马上,它可以使用一个单独的捕捉异常块更好的处理这些异常,像下面:
  try {
    doExchange();
  }
  catch (Exception e) {
    logger.error("doExchange failed", e);
  }
However, if doExchange() is modified to throw a new type of exception
that should be handled in some different kind of way,
the broad catch block will prevent the compiler from pointing out the situation.
Further, the new catch block
will now also handle exceptions derived from RuntimeException such as ClassCastException,
and NullPointerException, which is not the programmer's intent.
但是,如果doExchange()被修改抛出一个新类型的异常,这个异常需要以一些不同的方式来处理,
宽泛的捕捉块将防止编译器指向这种情况。
更多的,新的捕捉块现在也可以处理起源于RuntimeException的异常,比如ClassCastException,
和NullPointException,这些都不是程序员的意图。   
13.4.RECOMMENDATIONS 建议
Do not catch broad exception classes like Exception, Throwable, Error,
or <RuntimeException> except at the very top level of the program or thread.
除非在程序或者线程的顶部,不要捕捉宽泛的异常类,类似于:Exception,Throwable,Error,
或者RuntimeException。
13.5.TIPS 提示
Fortify will not flag an overly broad catch block
if the catch block in question immediately throws a new exception.
Fortify不能标记一个过分宽泛的捕捉块,
如果这个捕捉块有问题,马上就会抛出一个新异常。
14. Poor logging practice:logger not declared static final(structual):
14.1.CreditRatingApprovalDisplayUCCImpl.java
private Logger logger = Logger.getLogger
(CustomerManagerTeamBSImpl.class);
原文:Declare loggers to be static and final..
翻译:定义日志工具必须是static和final的。
14.2.EXPLANATION 解释
It is good programming practice to share a single logger object
between all of the instances of a particular class
and to use the same logger for the duration of the program.
它是好的编程习惯,在所有特殊类的实例之间共享一个单独的日志对象,
并且在程序的持续时间中使用相同的日志组件。
Example 1: The following statement errantly declares a non-static logger.
例子1:下面的语句定义了一个non-static日志组件。
private final Logger logger =    
            Logger.getLogger(MyClass.class);
14.3.RECOMMENDATIONS 建议
Declare loggers to be static and final.
Example 2: The code in Example 1 could be rewritten in the following way:
定义日志组件为static和final类型。
例子2:在例子1中的代码可以以下面的方式改写:
private final static Logger logger =    
            Logger.getLogger(MyClass.class);
15. Code correctness:null argument to equals(Structual):
SystemCommonParameters.java
   if (obj==null||obj.equals(null)) {
15.1.原文:The expression obj.equals(null) will always be false.
翻译:表达式obj.equals(null)总是为false.
15.2.EXPLANATION 解释
The program uses the equals() method to compare an object with null.
This comparison will always return false, since the object is not null.
(If the object is null, the program will throw a NullPointerException).
程序使用equals()方法来比较对象和null.
这个比较将一直返回false,当然这是这个对象不是null的情况下.
(如果这个对象是null,程序将抛出NullPointException).
15.3.RECOMMENDATIONS 建议
It is possible that the programmer intended to check to see if the object was null.
可能是,程序员打算去检查,object对象是不是null.
Instead of writing 更换下面的写法
obj.equals(null)
they intended 他们打算





联系方式
公司名称 西安青穗信息技术有限责任公司
联系卖家 汪洋
手机 祺祴祷祷祸祹祸祷祹祵祴
地址 陕西省西安市