CoolFace
Apppublic

omernet/code-security-analyzer

sourceHugging Faceupdated 7mo agoView on Hugging Face
0likes
app.py93 linesDownload Raw Back to root
1import streamlit as st2from transformers import AutoTokenizer, AutoModelForSequenceClassification3import torch4 5# Sayfa ayarları6st.set_page_config(7    page_title="Code Security Analyzer",8    page_icon="🔒",9    layout="wide"10)11 12# Başlık13st.title("🔒 Code Security Analyzer")14st.markdown("CodeBERT tabanlı kod güvenlik analizi aracı")15st.markdown("---")16 17# Model yükleme durumu18@st.cache_resource19def load_model():20    MODEL_NAME = "mahdin70/codebert-devign-code-vulnerability-detector"21    tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)22    model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)23    model.eval()24    return tokenizer, model25 26with st.spinner("Model yükleniyor..."):27    tokenizer, model = load_model()28 29st.success("Model hazır!")30 31# Kod girişi32code_input = st.text_area(33    "Kodu yapıştırın",34    height=200,35    placeholder="def login(username, password):\n    query = f\"SELECT * FROM users WHERE user='{username}'\"\n    return db.execute(query)"36)37 38# Analiz butonu39if st.button("🔍 Analiz Et", type="primary"):40    if not code_input or not code_input.strip():41        st.warning("Lütfen analiz edilecek kod girin")42    else:43        with st.spinner("Analiz ediliyor..."):44            # Tokenize45            inputs = tokenizer(46                code_input,47                return_tensors="pt",48                truncation=True,49                max_length=512,50                padding=True51            )52            53            # Tahmin54            with torch.no_grad():55                outputs = model(**inputs)56                probabilities = torch.softmax(outputs.logits, dim=-1)57                prediction = torch.argmax(probabilities, dim=-1).item()58                confidence = probabilities[0][prediction].item()59            60            # Sonuçları göster61            st.markdown("---")62            st.subheader("Sonuç")63            64            if prediction == 1:65                st.error("🔴 ZAFİYET TESPİT EDİLDİ")66                st.markdown("Bu kodda güvenlik zafiyeti olabilir.")67            else:68                st.success("🟢 GÜVENLİ GÖRÜNÜYOR")69                st.markdown("Bu kod güvenli görünüyor.")70            71            st.progress(confidence)72            st.markdown(f"**Güven Skoru:** {confidence:.2%}")73 74# Örnekler75st.markdown("---")76st.subheader("Örnek Kodlar")77 78examples = {79    "SQL Injection (Zafiyet)": "def login(user, pwd):\n    query = f\"SELECT * FROM users WHERE name='{user}'\"\n    return db.execute(query)",80    "SQL Injection (Güvenli)": "def login(user, pwd):\n    query = \"SELECT * FROM users WHERE name=%s\"\n    return db.execute(query, (user,))",81    "XSS (Zafiyet)": "def render(comment):\n    return f'<div>{comment}</div>'",82    "XSS (Güvenli)": "def render(comment):\n    import html\n    return f'<div>{html.escape(comment)}</div>'"83}84 85selected_example = st.selectbox("Örnek seçin:", list(examples.keys()))86if st.button("Örneği Kullan"):87    st.session_state.code_input = examples[selected_example]88    st.rerun()89 90# Not91st.markdown("---")92st.info("💡 **Not:** Bu otomatik bir analizdir ve %100 doğru olmayabilir. Önemli kodlar için manuel review yapın.")93