在使用deepin安装好了php7.2 运行程序的时候华丽丽的给我报了这个错
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3′ not found
搜索了各种文档说的是libcurl.so.4有bug,不过可以安装libcurl3
sudo apt-get install libgconf-2-4
sudo apt-get install libcurl3
然后就可以使用了
在使用deepin安装好了php7.2 运行程序的时候华丽丽的给我报了这个错
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3′ not found
搜索了各种文档说的是libcurl.so.4有bug,不过可以安装libcurl3
sudo apt-get install libgconf-2-4
sudo apt-get install libcurl3
然后就可以使用了
最近做了一个招商银行支付对接,要求使用SHA1WithRSA算法校验, “ 成功签约结果通知 ” 和 “ 成功支付结果通知 ” 接收到的通知报文进行验签。招商银行给出的文档如下
此文档写的有问题,导致PHP无法成功的校验签名真伪。问题如下
1.noticeData不能转为小写,转了必挂
2.在解密前必须给签名base64_decode一下
3.获取招商银行公钥必须手动加上标准证书头 begin end
找到这些问题,SHA1WithRSA就迎刃而解了,用到的PHP函数只有一个 openssl_verify 核心代码如下:
$pub_key_id = '-----BEGIN PUBLIC KEY-----'.PHP_EOL.$publicKey.PHP_EOL.'-----END PUBLIC KEY-----'; $bool = openssl_verify($data, base64_decode($signature) ,$pub_key_id,OPENSSL_ALGO_SHA1); //如果签名正确返回 1, 签名错误返回 0, 内部发生错误则返回false 我的环境是php5.6
在和第三方支付接口对接时经常会对数据进行签名和验签,sha1WithRSA也算是比较常用的一种签名加密算法。php开启openssl库后实现起来也算比较简单。
我在这里使用sha1withRSA算法来实现数据的加密签名和验签,其中公钥和私钥均读取自接口方提供的.pfx证书文件。
以下是使用私钥进行签名的代码示例,注意其中在return前对生成的签名密文进行base64编码:
/**
* 签名 生成签名串 基于sha1withRSA
* @param string $data 签名前的字符串
* @return string 签名串
* @link www.zh30.com
*/
function sign($data) {
$certs = array();
openssl_pkcs12_read(file_get_contents(“你的.pfx文件路径”), $certs, “password”); //其中password为你的证书密码
if(!$certs) return ;
$signature = ”;
openssl_sign($data, $signature, $certs[‘pkey’]);
return base64_encode($signature);
}
验签时使用公钥,也就是.pfx文件中的cert KEY:
/**
* 验签 验证签名 基于sha1withRSA
* @param $data 签名前的原字符串
* @param $signature 签名串
* @return bool
* @link www.zh30.com
*/
function verify($data, $signature) {
$certs = array();
openssl_pkcs12_read(file_get_contents(“你的.pfx文件路径”), $certs, “password”);
if(!$certs) return ;
$result = (bool) openssl_verify($data, $signature, $certs[‘cert’]); //openssl_verify验签成功返回1,失败0,错误返回-1
return $result;
}
转载: https://www.zh30.com/php-sha1withrsa-sign-verify-pfx.html
redis有两个方案都可以只允许某些ip访问
1.redis.conf 修改bind 并重启
bind 192.168.1.100 10.0.0.1
2.使用iptables
iptables -A INPUT -s 10.19.42.53 -p tcp –dport 6379 -j ACCEPT
iptables -A INPUT -s 10.19.190.32 -p tcp –dport 6379 -j ACCEPT
iptables -A INPUT -s 10.19.165.206 -p tcp –dport 6379 -j ACCEPT
iptables -A INPUT -p TCP –dport 6379 -j REJECT
假定一个场景:某个网站它可能不希望被网络爬虫抓取,例如测试环境不希望被抓取,以免对用户造成误导,那么需要在该网站中申明,本站不希望被抓取。有如下方法:
方法一:修改nginx.conf,禁止网络爬虫的ua,返回403。
server {
listen 80;
server_name 127.0.0.1;
#添加如下内容即可防止爬虫
if ($http_user_agent ~* “qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot”)
{
return 403;
}
方法2:网站更目录下增加Robots.txt,放在站点根目录下。
在http://tool.chinaz.com/robots/站点可以针对现在的搜索引擎按照想要的规则生成robots.txt文件。
知识扩展:
robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。百度官方建议,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。
Robots协议是国际互联网界通行的道德规范,基于以下原则建立:
1、搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;
2、网站有义务保护其使用者的个人信息和隐私不被侵犯。
当然,如果搜索引擎不遵守约定的Robots协议,那么通过在网站下增加robots.txt也是不起作用的。(在正式环境中,可以适当允许搜索引擎抓取收录)
转载:http://www.webkaka.com/tutorial/zhanzhang/2017/061069/