这份是第3周:测试 + 安全结合的实战代码,直接就能用在接口安全、合规检查、自查漏洞,非常贴合你工作场景。
Day15:接口未授权访问检测(最常用安全测试)
import requestsdefcheck_unauthorized(url_list): result = []for url in url_list:try:## 不带 Cookie / Token 直接访问 res = requests.get(url, timeout=3)if res.status_code == 200and len(res.text) > 100: result.append((url, "可能存在未授权访问"))except Exception as e:passreturn resultif __name__ == "__main__": api_list = ["https://httpbin.org/get","https://httpbin.org/user-agent" ]for url, msg in check_unauthorized(api_list): print(url, msg)
Day16:接口越权测试(ID 遍历测试)
import requestsdeftest_id_permission(base_url, id_start, id_end): vuln = []for uid in range(id_start, id_end + 1): url = f"{base_url}?id={uid}"try: res = requests.get(url, timeout=2)## 如果返回正常且含用户信息,可能越权if res.status_code == 200and ("username"in res.text or"data"in res.text): vuln.append(uid)except:continuereturn vulnif __name__ == "__main__":## 示例:遍历用户ID print("可能越权ID:", test_id_permission("https://httpbin.org/get", 1, 10))
Day17:配置/返回敏感信息检测(手机号、身份证、密码)
import reimport requestsdefcheck_sensitive_info(text): patterns = {"手机号": r"1[3-9]\d{9}","身份证": r"\d{17}[\dXx]","密码明文": r"password=[^&]+|pass=\w+|pwd=\w+" } found = {}for name, pat in patterns.items(): res = re.findall(pat, text)if res: found[name] = list(set(res))return founddefscan_api_sensitive(url):try: res = requests.get(url, timeout=3)return check_sensitive_info(res.text)except:return {}if __name__ == "__main__": print(scan_api_sensitive("https://httpbin.org/get"))
Day18:弱口令检测脚本(仅自用测试环境)
import requestsdefweak_pass_scan(url, username_list, password_list): success = []for user in username_list:for pwd in password_list:try: data = {"username": user, "password": pwd} res = requests.post(url, json=data, timeout=2)if res.status_code == 200and ("success"in res.text or"token"in res.text): success.append((user, pwd))return success ## 找到即停except:continuereturn successif __name__ == "__main__":## 仅自己测试环境使用! res = weak_pass_scan("https://httpbin.org/post", ["admin", "test"], ["123456", "admin123", "password"] ) print("弱口令结果:", res)
Day19:接口参数异常测试(空参、越界、非法字符)
import requestsdefabnormal_param_test(url): test_cases = [None, "", "admin' OR 1=1--", "<script>alert(1)</script>","a"*1000, 0, -1, 99999999 ] result = []for param in test_cases:try: res = requests.get(url, params={"id": param}, timeout=2)if res.status_code in (200, 500): result.append((param, res.status_code))except:continuereturn resultif __name__ == "__main__": print(abnormal_param_test("https://httpbin.org/get"))
Day20:安全巡检一体化脚本(服务+端口+接口+文件)
import socketimport requestsimport hashlib## 综合巡检:端口是否开放 + 接口是否可访问 + 文件是否篡改defsecurity_check(host, ports, api_url, file_path, original_hash): report = {}## 1. 端口检查 open_ports = []for p in ports:with socket.socket() as s: s.settimeout(0.3)if s.connect_ex((host, p)) == 0: open_ports.append(p) report["开放端口"] = open_ports## 2. 接口存活try: report["接口状态"] = requests.get(api_url, timeout=2).status_codeexcept: report["接口状态"] = "不可访问"## 3. 文件完整性with open(file_path, "rb") as f: h = hashlib.md5(f.read()).hexdigest() report["文件被篡改"] = h != original_hashreturn reportif __name__ == "__main__": report = security_check( host="127.0.0.1", ports=[22,80,443,8080], api_url="https://httpbin.org/get", file_path="test.txt", original_hash="填写你之前保存的正确MD5" )for k, v in report.items(): print(k, ":", v)
Day21:整理成你的第一个「接口安全测试工具」
结构可以这样放:
security_tools/├─ api_scan.py ## 接口扫描├─ port_scan.py ## 端口扫描├─ sensitive_check.py ## 敏感信息检测├─ weak_pass.py ## 弱口令└─ main.py ## 统一入口
main.py 示例:
from port_scan import scan_portsfrom sensitive_check import scan_api_sensitiveif __name__ == "__main__": print("=== 接口安全巡检工具 ===") print("开放端口:", scan_ports("127.0.0.1", [80, 8080, 443])) print("敏感信息:", scan_api_sensitive("https://httpbin.org/get"))
第3周学完,你已经是会做接口安全测试的人了。 需要我继续发第4周:进阶优化 + 作品集整理的内容吗?这份是第3周:测试 + 安全结合的实战代码,直接就能用在接口安全、合规检查、自查漏洞,非常贴合你工作场景。
Day15:接口未授权访问检测(最常用安全测试)
import requestsdefcheck_unauthorized(url_list): result = []for url in url_list:try:## 不带 Cookie / Token 直接访问 res = requests.get(url, timeout=3)if res.status_code == 200and len(res.text) > 100: result.append((url, "可能存在未授权访问"))except Exception as e:passreturn resultif __name__ == "__main__": api_list = ["https://httpbin.org/get","https://httpbin.org/user-agent" ]for url, msg in check_unauthorized(api_list): print(url, msg)
Day16:接口越权测试(ID 遍历测试)
import requestsdeftest_id_permission(base_url, id_start, id_end): vuln = []for uid in range(id_start, id_end + 1): url = f"{base_url}?id={uid}"try: res = requests.get(url, timeout=2)## 如果返回正常且含用户信息,可能越权if res.status_code == 200and ("username"in res.text or"data"in res.text): vuln.append(uid)except:continuereturn vulnif __name__ == "__main__":## 示例:遍历用户ID print("可能越权ID:", test_id_permission("https://httpbin.org/get", 1, 10))
Day17:配置/返回敏感信息检测(手机号、身份证、密码)
import reimport requestsdefcheck_sensitive_info(text): patterns = {"手机号": r"1[3-9]\d{9}","身份证": r"\d{17}[\dXx]","密码明文": r"password=[^&]+|pass=\w+|pwd=\w+" } found = {}for name, pat in patterns.items(): res = re.findall(pat, text)if res: found[name] = list(set(res))return founddefscan_api_sensitive(url):try: res = requests.get(url, timeout=3)return check_sensitive_info(res.text)except:return {}if __name__ == "__main__": print(scan_api_sensitive("https://httpbin.org/get"))
Day18:弱口令检测脚本(仅自用测试环境)
import requestsdefweak_pass_scan(url, username_list, password_list): success = []for user in username_list:for pwd in password_list:try: data = {"username": user, "password": pwd} res = requests.post(url, json=data, timeout=2)if res.status_code == 200and ("success"in res.text or"token"in res.text): success.append((user, pwd))return success ## 找到即停except:continuereturn successif __name__ == "__main__":## 仅自己测试环境使用! res = weak_pass_scan("https://httpbin.org/post", ["admin", "test"], ["123456", "admin123", "password"] ) print("弱口令结果:", res)
Day19:接口参数异常测试(空参、越界、非法字符)
import requestsdefabnormal_param_test(url): test_cases = [None, "", "admin' OR 1=1--", "<script>alert(1)</script>","a"*1000, 0, -1, 99999999 ] result = []for param in test_cases:try: res = requests.get(url, params={"id": param}, timeout=2)if res.status_code in (200, 500): result.append((param, res.status_code))except:continuereturn resultif __name__ == "__main__": print(abnormal_param_test("https://httpbin.org/get"))
Day20:安全巡检一体化脚本(服务+端口+接口+文件)
import socketimport requestsimport hashlib## 综合巡检:端口是否开放 + 接口是否可访问 + 文件是否篡改defsecurity_check(host, ports, api_url, file_path, original_hash): report = {}## 1. 端口检查 open_ports = []for p in ports:with socket.socket() as s: s.settimeout(0.3)if s.connect_ex((host, p)) == 0: open_ports.append(p) report["开放端口"] = open_ports## 2. 接口存活try: report["接口状态"] = requests.get(api_url, timeout=2).status_codeexcept: report["接口状态"] = "不可访问"## 3. 文件完整性with open(file_path, "rb") as f: h = hashlib.md5(f.read()).hexdigest() report["文件被篡改"] = h != original_hashreturn reportif __name__ == "__main__": report = security_check( host="127.0.0.1", ports=[22,80,443,8080], api_url="https://httpbin.org/get", file_path="test.txt", original_hash="填写你之前保存的正确MD5" )for k, v in report.items(): print(k, ":", v)
Day21:整理成你的第一个「接口安全测试工具」
结构可以这样放:
security_tools/├─ api_scan.py ## 接口扫描├─ port_scan.py ## 端口扫描├─ sensitive_check.py ## 敏感信息检测├─ weak_pass.py ## 弱口令└─ main.py ## 统一入口
main.py 示例:
from port_scan import scan_portsfrom sensitive_check import scan_api_sensitiveif __name__ == "__main__": print("=== 接口安全巡检工具 ===") print("开放端口:", scan_ports("127.0.0.1", [80, 8080, 443])) print("敏感信息:", scan_api_sensitive("https://httpbin.org/get"))
第3周学完,你已经是会做接口安全测试的人了。