web服务器不能正常发送短信

网站注册,用户获取验证码失败,经过网站开发兄弟提醒,研究了下fsockopen()等函数,现摘要如下

Fsockopen()

(PHP4,PHP5)

用于打开一个网络链接或一个unix套接字链接。

也就是说,既然此函数会参与短信API收发,那么就有可能该函数打开了一个unix套接字链接,此时网站开发的兄弟亦证实了这点。

于是我马上想到很有可能是采用了三种套接字类型中的流套接字(sock_stream)。那么就会产生3次握手。于是用iptables命令发现,交互包被防火墙drop掉了。但是仅到此,问题才解决了一小部分而已,因为我们还要抓取端口,以便制定相应的防火墙规则。

我们先看下web服务器发送短信的流程

根据流程图,我们很容易看出有可能出现问题的地方,我们做下标记

因此我们在这两个地方抓包,首先是用户与web server交互之处,抓包情况如下

我们很轻易的就观测到,在用户申请验证码阶段,用的80端口,这对于web服务器来说,是不可能被drop掉的,此处排除。

接着,我们在服务器上抓包

发现,服务器访问短信网站API时候采用的是80端口,而服务器自己则是随机分配的一个端口,所以被防火墙drop掉了。因此需调试防火墙规则。

故障排除。

思考:由此我们是不是可以猜测,但凡此类短信注册网站是否都会有此bug。也许是我对iptables理解有限,据我目前所知,无论是定位源或目,或者再狠点,两者都一并限定了,都是会随之开放比较大的权限,相应的也会是网站防御的薄弱处之一。

若有思考有误,欢迎大家来吐槽!

END!

时间: 2024-11-01 00:35:36

web服务器不能正常发送短信的相关文章

手机端网页拨打电话和发送短信技巧

1.设置<meta>标签 <meta name="format-detection" content="telephone=no">当该 HTML 页面在手机上浏览时,该标签用于指定是否将网页内容中的手机号码显示为拨号的超链接.在 iPhone 上默认值是:<meta name="format-detection" content="telephone=yes"/>如果你不希望手机自动将网页

linux服务器沦陷为它人发送短信的工具

linux服务器沦陷为它人发送短信工具的原因:       今天上班产品经理说:公司的短信验证码剩余使用量为0,头一天我进行检查的时候还剩1万多条.震惊!震惊!震惊!     查找过程:   一:于是查看与我们第三方短信运营商进行沟通,查看相应的情况,具体如图:          当时的短信条数已经为0,我们继续查看下一条:          这个已经可以简单的发现问题了:          1.号码为空,发送状态为空.可能存在人为的绕过代码中的验证     2.发送时间(日期)是接连不断的发送

【Python web 开发】云片网发送短信验证码

发送短信验证码 是要使用第三方服务的,运营商是不可能提供对外的个人发送短信服务功能,我们本身也没有能力去发送验证码,云片网是目前提供这种服务使用率较高的服务商之一 我们先来看下云片网国内单条发送短信的api 根据api 写了一个脚本,这个appkey 我还没申请 如何使用云片网发送短信? 1.首选要申请签名 + 填写 短信模板 2.签名审核,短信模板审核 3.一定要将自己的服务器的ip地址填写到  [云片网--设置--ip 白名单--添加服务器的IP地址] 不然会发送失败 本机测试查到本机的IP

微信小程序如何发送短信验证码,无需搭建服务器

自从微信小程序提供云开发支持,开发者无需搭建后台服务器,使用微信提供的核心API就可以实现应用功能,此时就需要小程序能够自己发送短信,比如短信验证码,榛子云短信(http://smsow.zhenzikj.com)为此开发了一套专门用于小城的SDK,详情参考: http://smsow.zhenzikj.com/doc/sdk.html 下面小编就详细讲解一下如何使用: 1.安装 下载后的SDK只包含一个zhenzisms.js文件,可直接放在utils文件夹中,然后通过require引入,如下

phoneGap的Android下编写phonegap 发送短信插件

一.前端代码的编写 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery Mobile Web 应用程序</title> <link href="jquery.mobile-1.3.2.css" rel="stylesheet" type="text/css"/>

定时发送短信总结

package com; import java.io.*;import java.net.*;import java.security.*;import java.util.regex.Matcher;import java.util.regex.Pattern; public class Client { /* * webservice服务器定义 */ private String serviceURL = "http://sdk.entinfo.cn:8061/webservice.asm

C# Ajax 手机发送短信验证码 校验验证码 菜鸟级别实现方法

1.Ajax请求处理页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.SessionState; using System.Web.Services; namespace Web.User.Ajax { /// <summary> /// SendCheckcode 的摘要说明 /// </summary> [WebSer

批量发送短信,并批量插入短信记录

最近在项目中遇到了群发短信的需求. 需求点包括: 1.给符合条件的人群发优惠券短信 2.并对发送短信做记录,成功或者失败.(SqlServer) 短信接口: 亿美,api中有群发短信的接口,一组最大为200条. 思路: 1.发送的手机集合放进一个队列 2.依次读取队列,放到待发送列表,当满足200(短信组个数可配置在web.config中)条时,调用接口发送,直到队列数据发完 3.发送结果放进已发送短信结果集合 4.把发送结果批量插入数据库 代码: 群发helper /// <summary>

通过第三方接口发送短信验证码/短信通知

需求:将首次交付密码为公共默认密码的方式改为点击入职功能,用短信方式发送系统自动生成的八位含数字.大小写字母和特殊符号生成的密码.短信发送服务由云通信http://www.yuntongxun.com/提供. 随机密码生成方法:  /**      * 生成随即密码      * @author chao.gao      * @param pwd_len 生成的密码的总长度      * @return 密码的字符串      */     public static String genRa