2013-04-15 4 views
0

Привет всем: D Как я могу защитить формулу (в документе Excel) за PHPExcel?Закрепить формулу за PHPExcel

Я использую HTML-форму для POST с введенным пользователем значением, PHP возвращает формулу из документа Excel и вычисляет с помощью введенного пользователем значения, а затем возвращает ответ вычисления пользователю. Формула не в HTML или PHP-скрипте, она находится внутри документа Excel.

Как защитить формулу в документе Excel? Я установил разрешение файлов документов Excel на ftp до 400 (без разрешения на чтение, запись, удаление для группы и общественности, у Владельца есть только разрешение на чтение), поэтому публика не может их загрузить. Но достаточно ли этой защиты? Существуют ли другие методы для чтения формулы внутри этих документов Excel?

Для тех, кто интересуется формулой внутри этих документов Excel, является =IF(A1>0,"Greater than Zero",IF(A1<0,"Less than Zero","Equals Zero")) Эта формула - это то, что я хочу защитить, это то, что я не хочу, чтобы кто-нибудь видел, за исключением тех, кто имеет доступ к серверу, конечно.

HTML Form Script

<form action="./FirstInteraction.php" method="post"> 
Input A1: <input type="number" name="A1"> 
<input type="submit"> 
</form> 

PHP скрипт: FirstInteraction.php

/** Include path **/ 
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/'); 

/** PHPExcel_IOFactory */ 
include 'PHPExcel/IOFactory.php'; 

/** Load Excel File **/ 
$inputFileName = './TrueFalse.xlsx'; 
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 

/** Change A1 Value **/ 
$objPHPExcel->getActiveSheet()->setCellValue('A1',$_REQUEST["A1"]); 

/** Calculate and State B1 Value **/ 
echo "<br> It is ".$objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue(); 

ответ

1

Поскольку никто не может получить доступ к .xlsx файл, ни загрузить его, и, кроме того, PHP скрипт только server- видимая сторона, нет никакой необходимости в дальнейшей безопасности.

Однако, каковы ваши опасения по поводу этого? Как вы думаете, что они могут получить доступ к вашей формуле? Если у вас есть какие-то предложения относительно какого-либо эксплойта, возможно, мы сможем дать правильное предложение, как его исправить.

+0

Я только начал изучать PHP два дня назад, поэтому я так волнуюсь, потому что я не уверен, какой эксплойт существует и невозможен. – Lin

+0

В общем случае, если вы сделали ваш файл excel недоступным из другого источника, кроме сервера, вам не нужна никакая другая защита. Только остерегайтесь ваших пользовательских входов, т. Е. Не создавайте поля, которые пользователь заполняет, которые должны быть переданы функции eval(), где они могут выполнять PHP-код и не только использовать код для чтения вашего файла, но и некоторые более вредные действия. –

+0

OK спасибо большое. – Lin

1

Как вы относитесь к защите? Если вы хотите запретить редактирование этой ячейки, то:

$objPHPExcel->getActiveSheet()->getStyle('B1')->getProtection()->setLocked(
    PHPExcel_Style_Protection::PROTECTION_PROTECTED 
); 
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 
+0

О, я имел в виду защиту информации, которую ячейка не читала публике. : D – Lin

+0

Если вам необходимо запретить чтение этой книги публикой, вы делаете свою книгу недоступной, сохраняя ее за пределами доступных в Интернете каталогов (т. Е. Вне корневого каталога или подкаталогов). –

+0

Есть ли эксплойты, которые позволят публике читать информацию с помощью других команд скрипта? – Lin

Смежные вопросы