XSS, CSRF, CRLF, SQL注入都是历史悠久的四种攻击方式,因为参数化查询已经成了普遍用法,我们已经离SQL注入很远了,但是,XSS,CSRF,CRLF却没有远离我们。
本文以初学者角度探讨四种Web攻击以及预防方式,是个人基于对多种Web漏洞的学习总结,不承诺内容规范。
XSS, CSRF, CRLF, SQL注入都是历史悠久的四种攻击方式,因为参数化查询已经成了普遍用法,我们已经离SQL注入很远了,但是,XSS,CSRF,CRLF却没有远离我们。
本文以初学者角度探讨四种Web攻击以及预防方式,是个人基于对多种Web漏洞的学习总结,不承诺内容规范。
AngularJS 给 directive scope 绑定的 function 传参
如果我们想要给directive的scope中绑定的方法传递参数,需要传递对象,而不是直接传值。
举个栗子,这里的clickOutside是从用的地方传入的一个方法,debug时我们会发现绑进来的clickOutside
并不是我们传的clickOutSideAction
。
1 | app.directive('clickOutSide', ['$document', function($document) { |
1 | <div data-click-out-side click-Outside="$ctrl.clickOutSideAction()"></div> |
如果需要在这里给clickOutSideAction传参数,应该这样改:
1 | app.directive('clickOutSide', ['$document', function($document) { |
1 | <div data-click-out-side click-Outside="$ctrl.clickOutSideAction(event)"></div> |
好处是在实际使用directive的地方,不需要考虑参数列表顺序,只需要保证参数名称正确。
封面来源: 10th Magnitude
这是篇瞎球折腾笔记。
CI是个好东西,前段时间看了一本关于DevOps的书,对持续集成有了一定了解。
Hexo博客本身拥有很简洁的编译、部署过程:
1 | hexo g |
但是简单的基础是前戏太多:
配置SSH,拉项目,拉子模块,安装NodeJS,安装脚手架,安装依赖……
虽然命令多,但是比较单一,便首先想到了给Hexo写CI脚本。
使用的第一个平台是腾讯云开发者平台(dev.tencent.com),它提供基于Jenkinsfile的持续集成beta版本
优点:免费,全中文界面,配置简单易于上手,支持Jenkins,国内服务速度快
缺点:目前功能较少,不支持上传secret files,无法配置SSH,npm依赖下载缓慢
hexo d
命令是需要调用git push
的,不支持SSH就凉了,过程就不讲了,在经过一番折腾后,我选择放弃了这个平台。
第二选择是自己搭建Jenkins,一番折腾后,发现自己的VPS性能太差,而且Windows版一些配置难以用配置文件完成,要手动配置,考虑到未来迁移起来会困难,逐放弃……
优点:完全免费,网上资料丰富
缺点:配置复杂,需要自行搭建,性能依赖于VPS性能
最后成功地在巨硬(Microsoft)Azure DevOps上配置好了,跟大家分享步骤!
优点:免费(一个月1800分钟、1个并行job),runner质量高,配置方便
缺点:Web hook不稳定,2次遇到GitHub调不通而没有自动触发Trigger的情况,与其他CI配置不兼容,参考资料较少
在Gist上找到的一个directive,用来让input输入框的宽度自适应内容宽度。
https://gist.github.com/mbenford/8016984
原理是生成一个相同样式的,隐藏的span,通过span的宽度动态改变input的宽度。
同时兼顾了input有placeholder的情况。
如果是在比较大的系统中,可以用throttle节流阀包装一下resize方法,避免性能问题。
如果是textarea,对应的directive在这里:
https://github.com/monospaced/angular-elastic
让 MySQL Workbench 直接显示 BLOB 字段的内容
使用MySQL Workbench,查询一个带BLOB字段的表时:
1 | SELECT * FROM mysql.general_log ORDER BY event_time; |
只能看到一个BLOB图标。
MySQL JDBC 在查询中调用 REPLACE(UUID(),'-','') 查出重复的 UUID
MySQL版本是5.7.25,最近升级了JDBC驱动,5.1.45 -> 8.0.13,导致一个SQL报异常,SQL是用一个子查询,拿到数据后插入到另一张表用的。
1 | INSERT INTO table_2 (id, title, modified_date) |
可见table_2的id是在子查询中,用REPLACE(UUID(),'-','')
生成的。
这样的语句在MySQL 5.7.25命令行模式下,Workbench下,JDBC 5.1.45下都没有问题,但是JDBC升级到8.0.13后,却报了主键重复的异常。
ERROR SqlExceptionHelper - Duplicate entry 'ae3867585cc611e986e30e045157562c' for key 'PRIMARY'
使用Termux在Android手机上搭建、编辑Hexo博客
高级终端Termux是个强大的终端模拟器,这样的应用应该特别适合不喜欢图形界面的命令行爱好者,组合了强大的终端模拟和拓展Linux包收集支持。
Step:
在Google Play或酷安搜索Termux安装,link:
https://play.google.com/store/apps/details?id=com.termux
https://www.coolapk.com/apk/com.termux
打开Termux,更新软件源
1 | apt update |
效果:
源码:
1 | <div class="chip"> |
1 | .chip { |
CodePen link:
https://codepen.io/iMaeGoo/pen/jRqYRJ
hmmmm…这种实现也没什么难的,其实是想试试在博文中插入HTML啦。
编写Chrome插件将googleapis替换为国内可访问的CDN
由于公司不能安装梯子,所以不能访问谷歌商店,平时频繁地要访问国外的AngularJS网站,比如AgGrid,AngularJS Material,AngularJS官网等,很多用了Google的CDN源,页面就无法正常加载。
一开始的思路是改host文件,但是我们没有Google CDN的证书,会造成证书错误。
参考并优化了:https://github.com/justjavac/ReplaceGoogleCDN ,动手写了一个Chrome插件,对所有特定请求重定向,解决痛点!
Make simple <md-chip> work without <md-chips> in AngularJS Material?
I’m using AngularJS Material v1.1.1.
I’m finding a way to use simple <md-chip>
without <md-chips>
.
Here is an easy way in Vue Material: https://codesandbox.io/s/lyoqv4l0z?module=App.vue
1 | <md-chip class="md-primary" md-deletable>Deletable</md-chip> |
But I can not find the similiar way in AngularJS Material document.
https://material.angularjs.org/latest/api/directive/mdChip
Angular version: 1.6.6
在HTML中想使用$rootScope
中的变量时发现取不到,加上$root
之后解决。
HTML表达式 | 对应的JS变量 |
---|
GitHub Page配置CDN遇到无限301重定向(HTTP ERROR 564)
今天发现腾讯云上有免费的CDN流量,就尝试给自己的Github Page用上,配置好后却一直301重定向,毕竟Github服务器不是自己的,配置和log都看不了,那为什么一直301呢?
给腾讯云CDN提交工单,客服查了一下(不到10分钟),发现是HTTPS的问题。
Shadow Defender 安装后启动蓝屏、无法启动、不兼容 Win10 解决方案
Windows 10 系统驱动更新快,经常遇到更新完和 Shadow Defender 不兼容的情况,有时甚至造成 Windows 无法启动并且自动修复失败,这时候就要先禁用然后等待 Shadow Defender 更新。
如果当前启用了影子模式
请从可启动的 CD/DVD/USB 设备启动, 然后删除隐藏文件 “C:\diskpt0.sys” 并重新启动, 这将禁用阴影模式。
如果当前未启用影子模式
请将 “C:\Windows\system32\drivers\null.sys” 复制到 “C:\Windows\system32\drivers\diskpt.sys”,这将覆盖 SD 使用的驱动程序,然后重新启动。
译自原文:https://stormpath.com/blog/put-or-post
原作者:Stormpath 团队
2016/5/12更新:观看 Stormpath Hazlewood 的介绍 REST + JSON API 设计最佳实践.
Android版本 (1.0~14.0) 与API Level (SDK版本1~34) 对应表
API 级别是一个对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值。
Android 平台提供了一种框架 API,应用可利用它与底层 Android 系统进行交互。 该框架 API 由以下部分组成:
在Chart options中添加:
1 | // 给图例加手势 |