V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hilow  ›  全部回复第 2 页 / 共 4 页
回复总数  67
1  2  3  4  
2018-06-03 20:16:31 +08:00
回复了 peizhao2017 创建的主题 问与答 请教下大神,使用了 pdo 是不是就可以无视 sql 注入了?
经过 prepare 后的参数,对 mysql 来说,是安全的,可以直接入库
但安全是个大问题,对 mysql 安全的数据,也许在其他地方使用,就会引起注入问题
比如 存入 mysql 中的是 js 代码,那你经过处理直接把这些 文本 用到前端,就可能引起问题
推荐一本书 白帽子讲 web 安全,里面有全面的有关示例
2018-06-03 20:10:57 +08:00
回复了 hilow 创建的主题 问与答 Java 中的 AES SHA1PRNG 如何用 golang 实现?
@a7a2 谢了
但我主要疑问不是如何加密,是如何生成加密时所用的 key
java 中 AES SHA1PRNG 的生成逻辑是个黑盒吗?还是有什么标准可以参考?
而且 keyBytes 固定时,在 jdk 1.7 时,这个操作返回的 key,每次都随机;
我更新了 jdk 10 后,返回的 key 才固定下来。真把我搞晕了。

[hi@hi javaapi]$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
2018-05-30 13:25:50 +08:00
回复了 nikoo 创建的主题 问与答 为什么修改端口号后仍可保持连接?
@Tyanboot 我在#5 说的不对。服务端是用 22 端口建立的连接。
#27 是我更正后的准确说明
2018-05-30 00:42:21 +08:00
回复了 nikoo 创建的主题 问与答 为什么修改端口号后仍可保持连接?
server 调用 listen 监听 22 端口的请求
client 调用 connect 连接到 22 端口,此时 client 自动分配一个 port1,并向 server 发送一个 syn 包,表示请求建立新的连接

server 收到 syn 后,调用 accept 接受 client 的连接请求,并向 client 回复一个 syn+ack 包
client 回复 ack 包后,连接正式建立完毕。后续双方发送 psh/ack 包交换数据。直到出现 fin 或 rst 包时,或者连接之间长时间无数据传递,即超时,连接才会关闭。

题目所说防火墙禁用非 22 端口的数据,我猜很大可能,仅仅是允许 22 端口收到 syn 包,建立连接,非 22 端口收到 syn 会被防火墙丢弃。
这个需要你来确认,具体使用的什么防火墙,配置的什么策略。


所以能导致当前 ssh 连接失效断开的情况,有以下几种,
1.sshd 进程关闭,导致 client 收到 fin 或者 rst 包
2.防火墙丢弃 22 端口收到的 psh 或 ack 数据

mario85 所贴链接说明,不会出现第 1 种情况,因为每个已建立的连接是新的进程。ssh 代码应该做了特殊处理,以保证不在重启配置时关闭之前启动的进程。
第二种情况也没有出现,因为防火墙的配置中允许所有端口的 push/ack 包,禁止非 22 端口的 syn 包。



tcp 连接建立过程
https://en.m.wikiversity.org/wiki/Wireshark/TCP

ssh 重启过程,链接由 mario85 提供
https://unix.stackexchange.com/questions/27636/how-does-ssh-connection-survive-a-network-restart

iptables 防火墙使用
https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands


Allow All Incoming SSH To allow all incoming SSH connections run these commands:

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
The second command, which allows the outgoing traffic of established SSH connections, is only necessary if the OUTPUT policy is not set to ACCEPT.
2018-05-29 12:53:23 +08:00
回复了 nikoo 创建的主题 问与答 为什么修改端口号后仍可保持连接?
我说的有些地方不准确。晚上有空我再补充下。
抱歉
2018-05-29 12:41:09 +08:00
回复了 nikoo 创建的主题 问与答 为什么修改端口号后仍可保持连接?
你的问题是 server 端的 port2 是被禁止访问的,为什么 clientIP:port1<------>serverIP:port2 之间能通信?

这个我也得查资料确认下,猜测是因为防火墙禁止的只是发送到 非 22 端口的 syn 数据包吧。
我这就确认下去
2018-05-29 12:26:14 +08:00
回复了 nikoo 创建的主题 问与答 为什么修改端口号后仍可保持连接?
ssh 使用 tcp 协议,可以了解一下 tcp 连接简历的过程就容易理解了。

server 调用 listen 监听 22 端口的请求
client 调用 connect 连接到 22 端口,此时 client 自动分配一个 port1
server 调用 accept 接受 client 的连接请求,此时 server 自动分配一个新的 port2

所以更改 ssh 的 listen port 是,对上面已经建立的连接 clientIP:port1<------>serverIP:port2
是没有影响的
2018-05-24 09:56:37 +08:00
回复了 xrlin 创建的主题 程序员 请教下日志打印的最佳实践
在每个函数中返回 自定义的 *exerror.Error 类型变量。
此 err 变量中包含错误的上下文信息,如 userId, zerror 和 [email protected]:108 这样的 zcallstack
在调用函数时,如果返回非 nil 的 err,就能打印日志,日志中包含所有上下文信息。
实际业务中在不同代码中调用相同函数,可能出现同样错误,都返回了 err,这时能根据要求灵活决定是否打印出日志。
日志打印格式推荐“结构化日志信息”,比如`level=info msg="Recv RestRequest"` ,主要优点是,方便使用 grep awk 等工具过滤日志,详情参考[logrus]( https://github.com/sirupsen/logrus)
另外每行日志中增加一个`ReqId`,此 ID 全局唯一,用于关联同一会议的 ID

```log
cat log/server.log | grep ExtHwyApi_QLlUyYd9To
time="2018-05-24T09:42:02+08:00" level=info msg="Recv RestRequest" ReqHeader=map[Date:[2018-03-29T09:32:35+08:00] Accept:[application/json]] ReqId="ExtHwyApi_QLlUyYd9To" Url="/ext/api/product"
time="2018-05-24T09:42:02+08:00" level=warning msg="AuthTimeOut Disable" AuthTimeOutSeconds=0 ReqId="ExtHwyApi_QLlUyYd9To"
time="2018-05-24T09:42:03+08:00" level=error msg="RestDispatch Fail" ReqBody="{"seq":"ExtHwyApi_QLlUyYd9To","var":1}}" ReqId="ExtHwyApi_QLlUyYd9To" ResBody="{"Code":"812018","Msg":"发送失败"}" Tag="out_ccm" zcallstack="[email protected]:43 Handler@ext_hwy_api.go:44" zerror="dial tcp 127.0.0.1:5010: connectex: No connection could be made because the target machine actively refused it."
```
锤子手机自带此功能
可以试试锤子桌面
只要保证听见闹钟立刻起床,早起的习惯很容易养成。起床后洗澡或者出门转转,一定要保持清醒状态。最重要的是,清醒以后你要有事情做,起那么早还是跟晚上一样刷手机,那不是有病吗。
早上起的早,晚上自然困的早。坚持一个月就行了。
说到底,还是要有意志力。
我站立写代码一年,没觉得效率有什么变化。
不过,因为最近没怎么锻炼,站着容易累,所以,不专注的时候,一小时就会想坐下歇会。
其实每周平均也才站几个小时,因为一般都坐的难受了才会站起来。
2018-04-21 08:56:36 +08:00
回复了 pymumu 创建的主题 C [分享] :自己写的一个 UNIX 系统下的高性能 C/C++日志库
printf 会缓存到 4kb 才写文件,所以会快很多,但是在上层再加锁保证一致,感觉有些多此一举。
https://superuser.com/questions/305029/why-is-syslog-so-much-slower-than-file-io
2018-04-21 08:32:26 +08:00
回复了 pymumu 创建的主题 C [分享] :自己写的一个 UNIX 系统下的高性能 C/C++日志库
更正一下
linux 中 append 文件时,4kb 一下的内容会保证原子性。
https://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/
2018-04-21 08:24:37 +08:00
回复了 pymumu 创建的主题 C [分享] :自己写的一个 UNIX 系统下的高性能 C/C++日志库
没考虑过 syslog 吗?
另外 linux 在 write 文件数据为 64kb 以下(具体大小可能记得不准确)是能保证原子性的。
2018-04-20 07:38:33 +08:00
回复了 sunzhenyucn 创建的主题 程序员 请问现在上云的话,哪家比较划算?
这个酸酸乳的名字让我思考了一会
2018-04-17 19:32:25 +08:00
回复了 HangoX 创建的主题 程序员 大家有什么好的理由可以列出来让领导从 SVN 改为 git 吗
你抱怨那几个问题就是很好的理由吧
我觉得能说服自己的理由才好说服老板
git 对我来说,就是合并代码更方便。
适合项目分支多,开发人员多,需要频繁合并代码的情况。
另外,经常无法访问代码库,还要提交代码,用 git 更方便,因为可以本地提交。
如果项目各个模块独立,就一个人维护,我还真是觉得 svn 方便多了。
2018-04-17 07:38:55 +08:00
回复了 lance7in 创建的主题 程序员 看了湘雅那个帖子,发现 v2er 耳鸣的相当多啊,大伙来聊聊
你们带的什么耳机?会有这么严重吗。
我现在每天之前 4 小时耳机呢。
2018-04-16 20:18:34 +08:00
回复了 Reign 创建的主题 程序员 为了眼睛,有没有必要买投影仪写代码?
弄个蓝光眼镜先凑合吧。
有钱就直接上电子墨水屏幕。
2018-04-07 10:09:49 +08:00
回复了 Jimmy6luo8 创建的主题 4G 联通话费可以做什么?或者可以套出来吗?
@meng645342906 北京联通用户告诉你,消号的时候,余额不退。只能转到北京的联通号上。而且不能转到 177 这样的虚拟运营商号码。
2018-03-22 21:50:33 +08:00
回复了 hilow 创建的主题 问与答 关于 http reuest header 中使用 utf8 的问题
urlencode 出来的是带%的。
但我 fiddler 测试时,抓包显示是直接用 utf8 编码出来的我。
filename*=utf8''xxx 这个标准是 request header 和 response header 都这样吗?网上查到的,都是说的 response header
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4123 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 05:24 · PVG 13:24 · LAX 22:24 · JFK 01:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.