目录
2.避免使用字符串拼接来构建SQL查询语句,不要拼接没有经过验证的用户输入。
3.通过设置让Web应用中用于连接数据库的用户对WEB目录不具有写权限。
4.Web应用中,应对用于连接数据库的用户于数据库系统管理员用户的权限有严格区分,并设置Web应用中用于连接数据库的用户不允许操作其它数据库。
1.检查所有用户输入的数据是否经过严格的验证和清理,确保不会包含恶意的命令字符或序列。
2.验证系统是否使用了参数化查询来构建SQL语句,避免直接拼接用户输入到SQL语句中。
3.检查所有可以执行外部命令的函数调用,如system(), exec(), shell_exec()等,并确认这些函数是否正确处理了输入数据。
4.检查文件上传功能,确保上传的文件不会被用来执行任意命令。同时,检查文件读取逻辑,避免通过路径遍历漏洞执行本地文件中的命令。
5.对于提供API或Web服务的应用,确保所有请求参数都经过了适当的过滤和验证。
6.检查配置文件和可执行脚本的安全性,确认它们没有包含任何可以被外部操纵的变量或命令。
1.测试各种输入字段的最大和最小值,包括字符串长度、数值范围等,确保超出边界的数据不会导致程序崩溃或行为异常。
2.特别关注固定大小的缓冲区,测试过长的输入是否会导致溢出。这包括栈溢出和堆溢出两种情况。
3.测试整数运算,特别是加法和乘法,确保当计算结果超过整数类型所能表示的最大值时,程序能够正确处理。
4.测试函数的参数和返回值,确认它们在预期范围内,避免因参数错误或返回值异常导致的溢出。
5.检查调用外部接口或API时传递的数据量和类型,确保不会因为数据格式不匹配或数据量过大而引起溢出。
6.测试数据类型转换过程,特别是从一种类型转换到另一种类型时,确保转换不会导致溢出或数据丢失。
3.测试字符串输入的大小和数据类型,同时强制指定合适的范围和格式
4.测试字符串变量的内容,只接受合理的数据值,过滤掉包含二进制数据,转移序列,注释符号等输入
6.在参数中包含时间戳,随机数nonce等内容,用户防止重放攻击
在安全测试中,参数校验测试是确保应用程序能够正确处理用户输入,防止各种安全漏洞的关键环节。参数校验测试旨在验证应用程序能否有效识别和阻止恶意或错误的数据输入,从而防止诸如SQL注入、跨站脚本(XSS)、缓冲区溢出等攻击。
参数未经常规数据校验是导致安全问题的一个重要因素。无论是暴漏给用户的接口,还是内部通信接口,攻击者都可以利用这些未经校验的参数伪造数据,运行恶意代码,修改数据库,修改配置文件,造成拒绝服务等。
事实上,除了参数需要进行校验外,业务逻辑也需要进行校验,否则攻击者可能会利用这之间的逻辑漏洞去恶意修改价格,账户余额,级别权限等。
参数校验问题的类型
一、防XSS测试
未对特殊字符,代码,编码进行过滤
代码于数据区分分离
JSON数据未进行过滤
未对输入设置合适的全局过滤策略
测试点:
不可信数据,cookie安全性,使用框架,库或组件提高安全性
二、防SQL注入测试
未对特殊字符,SQL语句,特殊编码进行过滤
未使用参数化查询
测试点:
1.使用SQL查询参数化。
2.避免使用字符串拼接来构建SQL查询语句,不要拼接没有经过验证的用户输入。
3.通过设置让Web应用中用于连接数据库的用户对WEB目录不具有写权限。
4.Web应用中,应对用于连接数据库的用户于数据库系统管理员用户的权限有严格区分,并设置Web应用中用于连接数据库的用户不允许操作其它数据库。
三、防命令执行测试
有些API有命令执行功能,但未限制哪些命令可以执行
测试点:
1.检查所有用户输入的数据是否经过严格的验证和清理,确保不会包含恶意的命令字符或序列。
2.验证系统是否使用了参数化查询来构建SQL语句,避免直接拼接用户输入到SQL语句中。
3.检查所有可以执行外部命令的函数调用,如system(), exec(), shell_exec()等,并确认这些函数是否正确处理了输入数据。
4.检查文件上传功能,确保上传的文件不会被用来执行任意命令。同时,检查文件读取逻辑,避免通过路径遍历漏洞执行本地文件中的命令。
5.对于提供API或Web服务的应用,确保所有请求参数都经过了适当的过滤和验证。
6.检查配置文件和可执行脚本的安全性,确认它们没有包含任何可以被外部操纵的变量或命令。
四、防数据溢出测试
未对参数最大值进行限制,或未对参数的取值范围按照业务逻辑进行限制
测试点:
1.测试各种输入字段的最大和最小值,包括字符串长度、数值范围等,确保超出边界的数据不会导致程序崩溃或行为异常。
2.特别关注固定大小的缓冲区,测试过长的输入是否会导致溢出。这包括栈溢出和堆溢出两种情况。
3.测试整数运算,特别是加法和乘法,确保当计算结果超过整数类型所能表示的最大值时,程序能够正确处理。
4.测试函数的参数和返回值,确认它们在预期范围内,避免因参数错误或返回值异常导致的溢出。
5.检查调用外部接口或API时传递的数据量和类型,确保不会因为数据格式不匹配或数据量过大而引起溢出。
6.测试数据类型转换过程,特别是从一种类型转换到另一种类型时,确保转换不会导致溢出或数据丢失。
五、参数类型篡改
API接收本来应该在后端设置的参数并自动将其转换未内部对象属性