C# 如何给tcp发送出去的数据加密,达到防止恶意反复发送消耗服务器性能呢

qq_30094013 2017-07-29 05:32:43
最近碰到了有一些闲着蛋疼的人,用一些工具,对服务端进行反复连接,发送登录/注册请求,产生了很多垃圾数据。通常的加密只能保证数据不被修改,不能保证它不被重复利用,求一个应对的思路
...全文
350 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlzjff 2017-07-31
  • 打赏
  • 举报
回复
这个简单的有一个思路,就是说,tcp连接上以后,服务器决绝它请求,因为你这里说的是产生了很多无用的垃圾数据,并没有强调资源被它消耗太多是吧? 所以做法可以参考下面这3步: 1)最好能在建立连接之前,先确认身份,你加密的内容里最好包含类似于一个会话id,在登录成功后,每一个id可以标识出唯一的一个人,如果没做的话,用客户端ip,或者是会话id+ip都要,这里你看你现有设计的具体情况。 2)之后是,可以利用如redis这样的缓存,按照你的业务需求,定义一个业务key,用来做这样的事情“同样一个服务,n秒内,n分钟内、n小时内、n天内,一个用户最多能访问几次,每一个时间单位,都是一个key的前缀” 3)你服务在收到tcp请求访问时,第一步是校验,这个用户是否已经访问过多了,如果是,则直接返回错误信息
by_封爱 版主 2017-07-31
  • 打赏
  • 举报
回复
在协议中加入"时间戳"之类的东西.然后解析的时候 判断就行了. 如果不合法 就不继续..
编程有钱人了 2017-07-31
  • 打赏
  • 举报
回复
同一个连接加时间戳验证
真相重于对错 2017-07-30
  • 打赏
  • 举报
回复
加装防DDOS攻击设备
jingqunhu 2017-07-29
  • 打赏
  • 举报
回复
加黑名单,直接过滤掉黑名单的数据包
  • 打赏
  • 举报
回复
你再怎么加密,对方也会用你发送的数据反复重复发送。
秋的红果实 2017-07-29
  • 打赏
  • 举报
回复
用扫描端口的工具扫到你的端口,模拟发送数据,这个最好在客户端进行控制,就像web连接一样,如果是重要场合,可以考虑用短信验证登录;一般场合,可以用随机数验证码方式,或者搞个像购票系统那种,选东西
qq_30094013 2017-07-29
  • 打赏
  • 举报
回复
引用 1 楼 xian_wwq 的回复:
只要是端口是开放的, 反复连接就是没有办法拒绝的 一般tcp连接在accpet之后都是要验证身份的 难道用工具连接后能通过身份验证?!
问题并不是在于对服务器的反复连接,是连接上以后,反复对服务器的反复发送同一条数据包(例如登陆)
xian_wwq 2017-07-29
  • 打赏
  • 举报
回复
只要是端口是开放的, 反复连接就是没有办法拒绝的 一般tcp连接在accpet之后都是要验证身份的 难道用工具连接后能通过身份验证?!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧