我正在使用fortify来扫描一个项目,我发现我对Sql注入有一些积极的错误。实际上,我有一个动态查询import socket
from socket import *
cs = socket(AF_INET, SOCK_DGRAM)
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
cs.sendto('222456', ('10.17.253.255', 12345))
from socket import *
s=socket(AF_INET, SOCK_DGRAM)
s.bind(('',12345))
while(1):
m=s.recvfrom(8192)
print 'len(m)='+str(len(m))
print 'len(m[0])='+str(len(m[0]))
print m[0]
print 'len(m[1])='+str(len(m[1]))
print m[1]
我创建了一个函数来清理tableName变量,如下所述http://bigsec.net/b52/Fortify/rules-schema/References/Custom%20Rule%20Examples.htm
但是fortify仍然在分析报告中显示了正面的错误sql注入。
我正在使用java 8 fortify 16
谢谢,
答案 0 :(得分:0)
您应该确保已经检查过您的例程并且SQL注入是安全的(例如通过引用和字符白名单)。完成后,您需要教Fortify这是SQL注入的验证例程。这将确保不报告使用此例程正确验证的任何跟踪。
您应该通过规则编辑器通过添加taintFlag =“VALIDATED_SQL_INJECTION”的污点标志的验证/清理规则添加自定义规则,将白名单例程注册为验证例程 - 然后SQL注入的接收规则不应报告这种污点的问题。
有关使用污点标记的更多信息,请参阅https://community.softwaregrp.com/dcvta86296/attachments/dcvta86296/fortify-discussions/2950/1/HP_Fortify_SCA_Custom_Rules_Guide_4.21.pdf