Yo uso esta clase, no soy experto en seguridad, pero segun me dijeron es excelente el nivel de encriptación que da, de momento lo estoy usando(no me preocupa mucho la idea de tener que proteger el código eso si) pero funciona.
Código PHP:
Ver original<?php
/**
*
*/
Class PhpEncode {
private $fileName="";
private $obfuscatedFilePostfix="obfuscated";
private $obfuscateFileName="";
/**
*
*
* @param string $obfuscatedFilePostfix
*/
public function __construct($obfuscatedFilePostfix=""){
if (trim($obfuscatedFilePostfix)!="") { $this->obfuscatedFilePostfix=$obfuscatedFilePostfix;
}
}
/**
* encoding
* @param string $fileName
* @return
*/
public function obfuscate($fileName) {
if (trim($fileName)=="") { $this->errors[]="File Name cannot be blank in function: ".__FUNCTION__;
return false;
}
$this->errors[]="Failed to open file: $fileName in the function: ".__FUNCTION__;
return false;
}
$this->fileName=trim($fileName);
$fileName=substr($this->fileName,0,$pos); $this->obfuscateFileName=$obfuscateFileName=$fileName.".".$this->obfuscatedFilePostfix.".".$ext;
if(($fp=fopen($obfuscateFileName,"w+"))===false){ $this->errors[]="Failed to open file: $obfuscateFileName for writing in the function: ".__FUNCTION__;
return false;
}
else {
$line=$this->encodeString($line,ENCODING_LEVEL);
$line.="\r\n";
}
return $obfuscateFileName;
}
/**
* Function to encode the file content before writing it
*
* @param string $string
* @param [int $levels]
* @return string
*/
private function encodeString($string, $levels=""){
}
$levels=(int) $levels;
for ($i=0; $i<$levels;$i++){
$string='eval(base64_decode("'.$string.'"));';
}
return $string;
}
/**
* Function to return all encountered errors
* @return array
*/
public function getAllErrors(){
return $this->errors;
}
/**
* Function to find if there were any errors
*
* @return boolean
*/
public function hasErrors(){
if (count($this->errors)>0) { return true;
}
else {
return false;
}
}
}
?>
Obviamete el uso es muy simple
Código PHP:
Ver original<?php
include_once("PhpObfuscator.inc.php");
$fileName="file.php";
$obfuscator=new PhpEncode();
$obfuscatedFile=$obfuscator->obfuscate($fileName);
//debug mode
if($obfuscator->hasErrors()){
$errors=$obfuscator->getAllErrors();
echo "<pre>";
}
else {
print("<p><u>$fileName</u> was successfully obfuscated as <a href='$obfuscatedFile'><strong>$obfuscatedFile</strong></a></p>");
}