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 他們打算





聯系方式
公司名稱 西安青穗信息技術有限責任公司
聯系賣家 汪洋
手機 잵잯잰잰잱재잱잰재잲잯
地址 陜西省西安市