import streamlit as st from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch # Sayfa ayarları st.set_page_config( page_title="Code Security Analyzer", page_icon="🔒", layout="wide" ) # Başlık st.title("🔒 Code Security Analyzer") st.markdown("CodeBERT tabanlı kod güvenlik analizi aracı") st.markdown("---") # Model yükleme durumu @st.cache_resource def load_model(): MODEL_NAME = "mahdin70/codebert-devign-code-vulnerability-detector" tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME) model.eval() return tokenizer, model with st.spinner("Model yükleniyor..."): tokenizer, model = load_model() st.success("Model hazır!") # Kod girişi code_input = st.text_area( "Kodu yapıştırın", height=200, placeholder="def login(username, password):\n query = f\"SELECT * FROM users WHERE user='{username}'\"\n return db.execute(query)" ) # Analiz butonu if st.button("🔍 Analiz Et", type="primary"): if not code_input or not code_input.strip(): st.warning("Lütfen analiz edilecek kod girin") else: with st.spinner("Analiz ediliyor..."): # Tokenize inputs = tokenizer( code_input, return_tensors="pt", truncation=True, max_length=512, padding=True ) # Tahmin with torch.no_grad(): outputs = model(**inputs) probabilities = torch.softmax(outputs.logits, dim=-1) prediction = torch.argmax(probabilities, dim=-1).item() confidence = probabilities[0][prediction].item() # Sonuçları göster st.markdown("---") st.subheader("Sonuç") if prediction == 1: st.error("🔴 ZAFİYET TESPİT EDİLDİ") st.markdown("Bu kodda güvenlik zafiyeti olabilir.") else: st.success("🟢 GÜVENLİ GÖRÜNÜYOR") st.markdown("Bu kod güvenli görünüyor.") st.progress(confidence) st.markdown(f"**Güven Skoru:** {confidence:.2%}") # Örnekler st.markdown("---") st.subheader("Örnek Kodlar") examples = { "SQL Injection (Zafiyet)": "def login(user, pwd):\n query = f\"SELECT * FROM users WHERE name='{user}'\"\n return db.execute(query)", "SQL Injection (Güvenli)": "def login(user, pwd):\n query = \"SELECT * FROM users WHERE name=%s\"\n return db.execute(query, (user,))", "XSS (Zafiyet)": "def render(comment):\n return f'