2018/04/28 Nginx/Apache/Tomcat No Comments nginx防盗链(适用于图片与文件下载) **配置防盗链初衷是多为节约服务器带宽资源及简单对网站资源进行防盗。** ### 一、普通防盗链 ngx_http_referer_module模块:可根据header中的referer信息屏蔽某些请求对网站或应用的访问,可以起到禁止直接访问网站static files的作用(防盗链或保护文件)。 ``` location ~ ^/img/.*.(gif|jpg|jpeg|png|bmp|swf)$ { #valid_referers none blocked *.www.fity.cn *.test.com server_names ~\.google\. ~\.baidu\.; valid_referers *.www.fity.cn *.xsimple.cn server... 继续阅读 »
2018/04/28 Nginx/Apache/Tomcat No Comments http跳转https_设置指定目录不跳转nginx rewrite 今天遇到需求是在访问url网址需要实现部分路径不进行https跳转,之前nginx设置的是对全部http url进行301跳转到https协议,具体实现的nginx rewrite如下: ```c set $is_jump 0; if ( $request_uri ~ ^/post/.* ){ #如果url地址中包含post则不跳转 set $is_jump 1; } if ($is_jump = 0) { return 301 https://$server_name$request_uri; } ``` 继续阅读 »
2018/01/06 PHP/Python/Java No Comments php openssl_encrypt无填充注意点 **php openssl_encrypt OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING无填充加密失败或空白无输出问题:** 在ios/java(Android)加密选择无填充模式如果不足128字节的话,调用方法会自动填充至128字节再进行加密,但php跟java中没有统一的填充标准,所以openssl_encrypt并没有默认填充,openssl_encrypt加密对数据长度有要求(这个与钥模有关),从而导致加密失败,这就需要手动填充。可以使用php函数str_pad函数。 继续阅读 »
2018/01/06 PHP/Python/Java No Comments PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密 **PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式交互调取早期系统数据,由于早期AES使用的是mcrypt_encrypt函数,但该函数在PHP新版本中已逐渐废弃,PHP新版本中使用openssl_encrypt取代mcrypt_encrypt。 于是重新基于PHP7编写一个新类,由于需兼容现有早期系统的AES加解密类(并存填充与无填充),所以该类中增添部分判断。在规划项目、技术及开发时,未来往事推荐你尽可能规范化、标准化、统一化,以尽可能规避持续的维护投入,提升有效开发时间。 **AES对等加密解密类文件:CBC模式 - PHP** `... 继续阅读 »
2017/12/30 PHP/Python/Java, 随想/其他 No Comments 微信access_token说明及多业务统一调用方案 **普通access_token:** access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 参考出处: https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html **关于网页授权access_token和普通access_token的区别** **1、**微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后... 继续阅读 »
2017/12/28 PHP/Python/Java No Comments selenium chromedriver与chrome浏览器版本对应表(更新至v2.45) #### selenium chromedriver与chrome版本对应表(更新至v2.35) | chromedriver版本 | 支持的Chrome版本 | | ------------ | ------------ | | v2.45 | v70-72 | | v2.44 | v70-72 | | v2.43 | v69-71 | | v2.42 | v68-70 | | v2.41 | v67-69 | | v2.40 | v66-68 | | v2.39 | v66-68 | | v2.38 | v65-67 | | v2.37 | v64-66 | | v2.36 | v63-65 | | v2.35 | v62-64... 继续阅读 »
2017/11/10 数据库 No Comments mysql多条件模糊查询搜索结果优先按最佳匹配度排序 首先,我们需了解下mysql的locate函数: LOCATE(substr,str):返回字符串str第一次出现的子串substr的位置; LOCATE(substr,str,pos):返回第一次出现在字符串str的子串substr的位置,从位置pos开始。substr不在str中,则返回0。 SQL示例 - 搜索结果按关键词'充电'匹配度优先排序: ```sql SELECT id, title, title_spell, LOCATE("贡院", housename) AS sort_index FROM `xa_house` WHERE `status` = 1 AND ( ( `title` LIKE '%未来%' OR `title`... 继续阅读 »
2017/11/08 系统架构 No Comments 开放API接口安全设计 早期文章:[开放API接口设计简要思路](https://www.fity.cn/post/657.html "开放API接口设计简要思路") 最后更新:2019-06-21 20:05:39 星期五 #### 开放API接口安全校验的背景: **在未进行安全处理的开放API接口存在诸多的风险问题,如以下三种常见场景:** **1、**场景一 A公司开发的开放API未对接口进行安全控制,有黑客通过爬虫程序调用开放API查询客户信息的接口,由于没有安全验证,A公司的客户数据通过客户信息查询API流出,竞争公司拥有了这批客户数据,对A公司造成损失。 **2、**场景二 A公司开发的开放API未对接口进行防篡改控制,有客户购买价值1万元的产品,现有黑客通过技术手段,对客户提交的表单进行篡改... 继续阅读 »
2017/11/02 Blog相关 No Comments Typecho文章阅读量自定义 1、修改视图文件程序 admin/wirte-post.php打开这个文件找到合适的位置,添加个input框,用来输出阅读参数,我是放在日期下方的。 ```php 继续阅读 »
2017/08/06 数据库 No Comments 按最接近当前时间排序 mysql sql查询 **sql按当前时间较近的进行排序 且 大于当前时间的优先排序** ```php 假设数据表: id domain visit_time 1 blog.fity.cn 1570550400 #2019/10/9 2 fity.cn 1567958400 #2019/9/9 3 www.fity.cn 1562601600 #2019/7/9 ``` ```php 假设今天是2019/8/6,希望排序顺序: id domain visit_time 2 fity.cn 1567958400 #2019/9/9 1 blog.fity.cn 1570550400 #2019/10/9 3 www.fity.cn 1562601600 #2019/7/9 ... 继续阅读 »
2017/08/04 安全 No Comments 记一次阿里云ECS DDOS攻击。。。 早上上班还不到一小时 发现生产环境主机突然无法访问且ping不同,初步考虑是否主机白名单被篡改,经查看阿里云相关统计报表判断为DDOS攻击,经过持续半小时左右时间终恢复,本文仅用于记录不做为解决方案。 ECS主机默认情况在遭受攻击(例如DDOS)时流量超过本机房设定的黑洞阈值时,阿里云会屏蔽ECS主机的外网访问。当服务器进入黑洞一段时间后,如果系统监控到攻击流量停止,黑洞会自动解封。 **遭受攻击时网络拥塞截图如下:**  *很多时候遭受DDoS攻击事件感觉不是你能做什么,而是机房决定了其实你什么都做不了,内心是深深的绝望@_@。。。* **临时解... 继续阅读 »
2017/07/19 PHP/Python/Java No Comments tp_thinkphp_php检测上传图片中是否含脚本 #### 本文范例中是基于检测图片十六进制代码中是否包含``、`` 、``等脚本实现检测上传文件是否非法及包含木马脚本。 ```php class Upload { private static $image = null; private static $status = 0; private static $suffix = null; private static $imageType = array('.jpg', '.bmp','.gif','.png'); //允许的图片类型 private static $message = array( //文件上传错误信息 '0' => '没有错误发生... 继续阅读 »
2017/07/12 服务器技术 No Comments 2台机器之间的端口转发iptables ##### 2台机器之间的端口转发iptables方式实现,场景: 两台机器,A机器能正常访问,B机器不能直接被访问,所以希望用A机器进行端口转发间接访问B机器,大致思路: 路由器 ---- 指定端口nat到 ------- A机器---------iptables nat 到 ------------B机器的端口 >iptables -t nat -A PREROUTING -i em3 -p tcp --dport 5080 -j DNAT --to 192.168.0.230:80 (后面这个ip是B机器的ip加端口,前面的em3是A机器的数据经过的网卡 5080是访问A机器的5080端口就转发到后面机器来) >iptables -t nat -A POSTROUTING ... 继续阅读 »
2017/06/29 随想/其他 No Comments 学会思考,而不只是编程 中国人常说“授之以鱼不如授之以渔”。如果说教授编程是授之以鱼,那么教授计算机科学就是授之以渔。为什么说学习计算机科学比学会编程要重要得多?来听听 Yevgeniy Brikman 的解释。 现如今,似乎每个人都在学习编程:Bill Gates、Mark Zuckerberg 和 Chris Bosh 这些名人在 Code.org 网站上告诉人们每个人都拥有编程的能力;CoderDojo 项目在世界各地大张旗鼓;英国已经把编程作为小学官方课程。 不过,我认为这样有点误入歧途了。但请不要误会——我也确实认为代码能够让世界变得更美好——但编程本身并不是我们的目的。计算机和程序只是工具,它们是我们通向终点的桥梁。 我们真正的目标应该是教会人们如何思考。换句话说,我们应该教人们计算... 继续阅读 »
2017/06/29 PHP/Python/Java No Comments 百度主动推送API程序代码(PHP版) **百度自动推送代码(PHP版)** ```php $url = 'https://www.xxx.com'; // 你的网站URL地址 $token = '资源秘钥'; //在搜索资源平台申请的推送用的准入密钥,ziyuan.baidu.com普通收录-修改准入密钥查看token // 百度收录推送API链接地址 $api = "http://data.zz.baidu.com/urls?site=$url&token=$token"; // baidu文章收录推送 echo '百度收录自动推送:'; $file_path = "/news/{$id}.html"; //生成的新闻静态路径 $urls = array($url . $file_path,); //获取新闻推送地址... 继续阅读 »