2016-04-12 9 views
1

Fortify Scan сообщает уязвимость 'открытого Redirect' вКак устранить уязвимость Open Redirect Security в JavaScript?

window.open(strUrl,"_blank", features) 

Мой код:

var features = "status=no, toolbar=no, menubar=no, location=no, top=20, left=175, height=500, width=750"; 

var strURL = ADMIN_TOOL_SNOOP + "?machineName=" + strMachine + "&template=snoop" +"&context=DEBUG&date=" + strDate.replace(regExp, ""); 

var validateStrURL = new RegExp("/^[.\\p{Alnum}\\p{Space}]{0,1024}+/", "g"); 
if(validateStrURL.test(strURL)) 
{ 
    if((strURL != null)&&(strURL.length !=0)&&(strURL.length <= 200)) 
    { 
    window.open(strURL,"_blank",features); 
    } 
} 

Как я могу это исправить?

ответ

4

При обнаружении неполадок HP Fortify выполняет статический анализ кода на основе ряда правил. В случае проблем с Open Redirect он обнаруживает, что вы перенаправляете URL-адрес, который состоит из данных, переданных или созданных в вашем JavaScript. Обычно это считается открытым для манипуляции фишингом и другими атаками.

Вместо определения ADMIN_TOOL_SNOOP на стороне клиента и использования его для создания URL-адреса в JavaScript, попробуйте указать набор заданных целей, определенных на стороне сервера, используя страницу перенаправления, а затем отправьте свой код JavaScript целевую страницу как параметр.

Например, в вашей стороне клиента код есть

window.open('redirect.php?destination=ADMIN_TOOL&template=...') 

Затем в серверной стороне кода, вы должны иметь таблицу, аналогичную

DESTINATION_CODE | ACTUAL_URL 
-------------------------------------- 
ADMIN_TOOL  | my_actual_page.php 
ANOTHER_CODE  | another_page.php 

Когда сервер получает запрос переадресации, он должен искать соответствующий код и перенаправлять страницу на фактический URL. В случае несоответствующего кода должна произойти ошибка или перенаправление.

Таким образом, вы создаете белый список разрешенных URL-адресов, который контролируется на стороне сервера, а не на стороне клиента, что означает, что он не открыт для обработки на стороне клиента.

HP reference for that scan result

+0

Спасибо! Это хорошо объяснено. –

+0

Как исправить, если значение строки запроса является динамическим значением i.e? window.open ('redirect.php? Destination =' + paramvalue); –