美文网首页
机器学习学习笔记--SVM识别XSS

机器学习学习笔记--SVM识别XSS

作者: 松爱家的小秦 | 来源:发表于2017-11-27 22:47 被阅读0次

    XSS是什么?

    XSS又称CSS,全称Cross

    SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

    这里可以用SVM的SVC分类方法识别XSS攻击

    代码:

    #coding: utf-8

    import re

    import numpy as np

    from sklearn import cross_validation

    from sklearn import datasets

    from sklearn import svm

    from sklearn.externals import joblib

    from sklearn.metrics import classification_report

    from sklearn import metrics

    x = []

    y = []

    def get_len(url):

    return len(url)

    def get_url_count(url):

    if re.search('(http://)|(https://)',url,re.IGNORECASE):

    return 1

    else:

    return 0

    #web日志特征化 url 的长度 url中包含的第三方域名的个数

    def get_evil_char(url):

    return len(re.findall("[<>,\'\"/]",url,re.IGNORECASE))

    def get_evil_word(url):

    return len(re.findall("(alert)|(scripts=)(%3c)|(%3e)|(%20)|(onerror)|(onload)|(eval)|(src=)|(prompt)",url,re.IGNORECASE))

    #敏感字符的个数 敏感关键字的个数

    def do_metrics(y_test,y_pred):

    print "metrics.accuracy_score:"

    print metrics.accuracy_score(y_test,y_pred)

    print "metrics.confusion_matrix:"

    print metrics.confusion_matrix(y_test,y_pred)

    print "metrics.precision_score:"

    print metrics.precision_score(y_test,y_pred)

    print "metrics.recall_score:"

    print metrics.recall_score(y_test,y_pred)

    print "metrics.f1_score:"

    print metrics.f1_score(y_test,y_pred)

    def etl(filename,data,isxss):

    with open(filename) as f:

    for line in f:

    f1 = get_len(line)

    f2 = get_url_count(line)

    f3 = get_evil_char(line)

    f4 = get_evil_word(line)

    data.append([f1,f2,f3,f4])

    if isxss:

    y.append(1)

    else:

    y.append(0)

    etl('/home/qin/code/python/web-ml/1book-master/data/xss-200000.txt',x,1)

    etl('/home/qin/code/python/web-ml/1book-master/data/good-xss-200000.txt',x,0)

    #以上 导入数据并且完成特征化数据 而且完成xss打标为1 正常为0

    #数据的拆分 通常测试数据是40% 而训练数据为60%

    x_train,x_test,y_train,y_test = cross_validation.train_test_split(x,y,test_size=0.4,random_state=0)

    clf = svm.SVC(kernel='linear',C=1).fit(x_train,y_train)

    #SVM的分类模型被称为SVC 内核采用‘linear’

    y_pred = clf.predict(x_test)

    print y_train

    print y_pred

    print y_test

    do_metrics(y_test,y_pred)

    效果图

    这里输出了y_train和y_predict两个矩阵  数据有20w

    这里是得到的准确度有0.99之高

    相关文章

      网友评论

          本文标题:机器学习学习笔记--SVM识别XSS

          本文链接:https://www.haomeiwen.com/subject/yvejbxtx.html