① php用get表單傳值,接入他站api後返回新數值,有沒有辦法隱藏或者修改偽裝url不用post
按我理解的你的意思,是訪問你的博客的時候,參數里有個別的博客的網址,然後你的程序里通過這個網站把那個網站的內容抓 回來展示,如果是這樣,有兩種方式隱藏你說的url
把url參數加密或編碼,伺服器端取到後再解碼(如:用base64_encode和base64_decode),簡單的編碼可以面對普通用戶隱藏掉參數.
把你抓取的別的站的url在站內建一個資料庫保存,然後,參數里用編碼傳,伺服器根據編碼把url取出來再展示。不過這種也可以直接把url的內容抓回來保存了,不用每次去抓
基於程序實現的代碼邏輯研究上,這種方式可以嘗試。但是不推薦商用的優化網站,直接把別人的內容拿來並且不署名。一是對作者的勞動果實不尊重,二是這種做法需要承擔法律風險,如果傳播程度廣泛,原作者是可以通過法律途徑獲取賠償的
② 能通過B/S程序PHP讀取加密U盤扇區內字元/實現加密狗功能嗎
比較困難,而且沒什麼必要
如果是Windows平台的,完全可以用.NET C#快速構建一個這個功能的小程序,使用共享內存或者socket同PHP程序進行通信就可以了。Linux平台用C/C++結合系統和驅動提供的API也能快速的做出這種功能的小程序,用同樣的方式和PHP通信。
完全沒必要非得用PHP來實現,難度大也不好維護
③ php 如何實現 java的sha1加密
function encryptTokey($data){
$apikey = 'testapikey111';
$ps1 = sha1($apikey . strtolower($data));
$ps1 = strtoupper($ps1);
$s1 = implode(str_split($ps1, 2), '-');
$ps2 = md5($s1 . $apikey);
$ps2 = strtoupper($ps2);
$token = implode(str_split($ps2, 2), '-');
return $token;
}
echo encryptTokey('testdata');
運行結果:
68-10-98-74-4C-82-74-4B-CC-49-31-98-46-02-EE-8E
詳細你可以去後盾人看看,這些都是後盾人裡面的,哪裡有詳細的視頻教學都是高質量,我自己就是在裡面學的。
④ php開發api介面,如何做才算是安全的
這個問題很深
安全,不敢當,因為web安全問題很多,不僅僅是PHP編碼而已,有很多安全上的問題需要做處理,像伺服器漏洞、埠開放都會導致被黑,這都是很正常的。
只能說 比如在我做PHP開發過程的一些安全保護和在網路安全公司開發時的工作要求:
1、最基礎的,提供的api介面 要配置https。
2、api返回響應的信息,要盡可能使用消息加密返回,如高位數的 rsa加密內容。
3、接收的回調開放介面,盡可能做到使用回調黑、白名單,如加ip白名單放行,或ip黑名單禁止訪問。
4、不要相信用戶輸入、輸入信息要進行編碼轉換、轉義、過濾、使用框架和插件進行處理,如MySQL查詢的要進行參數綁定、如顯示問題要避免xss攻擊會進行過濾。
5、授權操作,錯誤限制設置閥值、超過閥值限制訪問、如最基礎的登錄功能。
6、常見額弱口令問題導致漏銅,應設置高強度口令,避免程序爆破。
7、文件上傳問題、應嚴格校驗文件類型、後綴、格式、及文件目錄許可權設置,從而避免文件上傳漏洞導致惡意代碼或webshell攻擊。
8、開發環境和生產環境隔開,不要再生產上面開debug、及時更新使用框架漏洞補丁如PHP國內常用 tp系列以前偶爾爆出漏洞(我用的較多就是tp5 ....),還有框架不要用最新要選擇最穩定的。
最後注意不管是驗證還是過濾,在客戶端執行過一次也好,在服務端,都要再次執行驗證和校驗。
和盛之文 我的文章保存網站,歡迎訪問學習或參考
⑤ php rsa加密 已有明文和公鑰 只需加密
你的公鑰有問題,不是有效的公鑰。
⑥ PHP API介面怎麼控制許可權
你好,控制許可權主要和是否登陸,以及登陸用戶的自身許可權有關,但因為API介面不能使用session所以你需要使用其他的信息進行代替。
我的建議是在app移動端發送登陸請求時,你就可以生產登陸後的Token信息。Token信息需要你根據用戶編號進行加密處理,然後移動端保存,在每次做其他請求時,連同Token一起發送過來,你再判斷是否存在Token,然後解密Token獲取用戶編號,再通過用戶編號判斷是否有相應許可權。
⑦ php 加密,請高手解碼。
最終解密出來的內容為:
<?php
if(!defined('API_MODE')) {
session_start();
}
date_default_timezone_set('Asia/Chongqing');
define('ROOT_PATH', str_replace('\', '/', substr(dirname(__FILE__), 0, -7)));
define('INC_PATH', ROOT_PATH.'include');
define('UPLOAD_DIR', ROOT_PATH.'upload');
require_once(ROOT_PATH.'config.php');
require_once(INC_PATH.'/common.func.php');
require_once(INC_PATH.'/db_mysql.class.php');
$db = new dbstuff();
$db->connect(DB_HOST, DB_USER, DB_PW, DB_NAME);
if(!$db) {
die('cannot connect to mysql');
}
if(!defined('API_MODE')) {
require_once(ROOT_PATH.'libraries/smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = ROOT_PATH.'templates'
$smarty->compile_dir = ROOT_PATH.'templates_c'
$smarty->cache_dir = ROOT_PATH.'cache'
}
$timestamp = time();
$action = isset($_REQUEST['action']) ? trim($_REQUEST['action']) : ''
$imgexts = array('gif','jpg','png');
?>
⑧ thinkphp資料庫配置信息加密怎麼處理
今天有一個朋友問我thinkphp的這個問題,剛好網路搜索到你這個問題。已經解決。就幫你解答一下這個問題。
首先我嘗試在入口文件封裝一個加密函數,我用php des 加密,然後在配置文件config.php調用。然後在控制器裡面使用,列印配置文件:mp(C());//輸出所有的配置文件信息, 雖然能看到正確的數據用戶名和密碼,但是會報錯。失敗告終。
我說一下我的解決方法。很簡單。
1:把配置文件裡面的用戶名,密碼,資料庫名瞎寫一寫,別人看到你的代碼的配置文件看到的就是錯誤的資料庫名和密碼了。比如:
'DB_NAME' => 'SB', // 資料庫名
'DB_USER' => 'ni_da_ye', // 用戶名
'DB_PWD' => 'da_da_bi', // 密碼
在每個控制器文件裡面。加入一段代碼。
比如你的IndexController.class.php文件。加下面的代碼。
/* 初始化方法*/
public function __construct(){
parent::__construct();
C("DB_NAME",decrypt('712349721937491237'));//資料庫名,
C('DB_USER',decrypt('712349721937491237'));//用戶名
C('DB_PWD',decrypt('712349721937491237'));//密碼
}
看清楚了嗎?
decrypt()這個函數就是我封裝的一個加密函數,親自測試沒有錯誤。可能會犧牲一些性能。但是保證了用戶名,密碼,資料庫名沒有泄露。甚至你都可以把資料庫連接地址也加密一下。希望能幫到你。
PHP加密函數可以考慮用des,aes這些可逆加密。別用什麼md4,md5.
⑨ php如何開發API介面
比如一個自定義函數:function test(){echo 『hello world』;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很復雜,視具體的編程任務而決定,並沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然後把你自己編寫的自定義函數,全部寫在這個文件裡面,那麼,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微復雜一點的,你可以把函數封裝在類裡面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo 『這是我的一個類方法』;}}調用的時候,先要實例化類,然後再調用方法。再復雜一點的就是使用類介面,區別就是介面裡面定義的只是方法原型,而你需要通過具體的類來實現介面中的函數,具體請參考 php 手冊
⑩ php代碼加密怎麼解密
$key="Thisissupposedtobeasecretkey!!!";
functionkeyED($txt,$encrypt_key)
{
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($txt,$i,1)^substr($encrypt_key,$ctr,1);
$ctr++;
}
return$tmp;
}
functionencrypt($txt,$key)
{
srand((double)microtime()*1000000);
$encrypt_key=md5(rand(0,32000));
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($encrypt_key,$ctr,1).
(substr($txt,$i,1)^substr($encrypt_key,$ctr,1));
$ctr++;
}
returnkeyED($tmp,$key);
}
functiondecrypt($txt,$key)
{
$txt=keyED($txt,$key);
$tmp="";
for($i=0;$i<strlen($txt);$i++){
$md5=substr($txt,$i,1);
$i++;
$tmp.=(substr($txt,$i,1)^$md5);
}
return$tmp;
}
$string="HelloWorld!!!";
//encrypt$string,andstoreitin$enc_text
$enc_text=encrypt($string,$key);
//decrypttheencryptedtext$enc_text,andstoreitin$dec_text
$dec_text=decrypt($enc_text,$key);
//加密
functionstr2hex($s)
{
$r="";
$hexes=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for($i=0;$i<strlen($s);$i++)=""$r.=($hexes[(ord($s{$i})>>4)].$hexes[(ord($s{$i})&0xf)]);
return$r;
}
//解密
functionhex2str($s)
{
$r="";
for($i=0;$i<strlen($s);$i=""+="2)"{
$x1=ord($s{$i});
$x1=($x1>=48&&$x1<58)?$x1-48:$x1-97+10;
$x2=ord($s{$i+1});
$x2=($x2>=48&&$x2<58)?$x2-48:$x2-97+10;
$r.=chr((($x1<<4)&0xf0)|($x2&0x0f));
}
return$r;
}
echostr2hex("山東");
echo"
";
echohex2str("c9bdb6ab");
?>