rootxhacker commited on
Commit
c9fd348
1 Parent(s): f722dc4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -62
app.py CHANGED
@@ -50,79 +50,37 @@ def get_completion(query, model, tokenizer):
50
  # Move model back to CPU to free up GPU memory
51
  model = model.cpu()
52
  torch.cuda.empty_cache()
 
53
 
54
  @spaces.GPU()
55
  def code_review(code_to_analyze):
56
- few_shot_prompt = f"""Review the following code for security vulnerabilities, logic flaws, and potential improvements:
57
-
58
- ```php
59
- function authenticateUser($username, $password) {{
60
- $conn = new mysqli("localhost", "user", "password", "database");
61
- $query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
62
- $result = $conn->query($query);
63
- if ($result->num_rows > 0) {{
64
- return true;
65
- }}
66
- return false;
67
- }}
68
- ```
69
-
70
- 1. Understanding of the code:
71
- - This function attempts to authenticate a user by checking their username and password against a database.
72
- - It establishes a database connection, constructs a SQL query with the provided credentials, and executes it.
73
- - If any matching rows are found, it returns true (authenticated); otherwise, it returns false.
74
-
75
- 2. Potential security issues:
76
- - SQL Injection vulnerability: The username and password are directly inserted into the query without sanitization.
77
- - Plaintext password storage: The code suggests that passwords are stored in plaintext in the database.
78
- - Hardcoded database credentials: Connection details are hardcoded, which is a security risk.
79
-
80
- 3. Potential logic vulnerabilities:
81
- - Multiple user authentication: The function returns true if more than one row is returned, which could lead to authentication issues if multiple users have the same credentials.
82
- - No input validation: There's no checking for empty or null username/password inputs.
83
-
84
- 4. Suggestions for improvement:
85
- - Use prepared statements to prevent SQL injection.
86
- - Implement proper password hashing (e.g., using password_hash() and password_verify()).
87
- - Store database credentials securely and separately from the code.
88
- - Implement proper error handling and use constant-time comparison for passwords.
89
- - Add input validation for username and password.
90
- - Consider using a single-row fetch instead of num_rows to ensure single-user authentication.
91
-
92
- Now, review the following code using the same approach:
93
 
94
  {code_to_analyze}
95
 
96
  Provide a detailed review including:
97
- 1. Understanding of the code
98
- 2. Potential security issues
99
- 3. Potential logic vulnerabilities
100
- 4. Suggestions for improvement
101
 
102
  Start each section with its number and title."""
103
 
104
- full_response = get_completion(few_shot_prompt, model, tokenizer)
105
 
106
- # Find the start of the AI's response (after the input code)
107
- response_start = full_response.find(code_to_analyze)
108
- if response_start != -1:
109
- response_start += len(code_to_analyze)
110
- ai_response = full_response[response_start:].strip()
111
-
112
- # Find the second occurrence of "1. Understanding of the code"
113
- first_occurrence = ai_response.find("1. Understanding of the code")
114
- if first_occurrence != -1:
115
- second_occurrence = ai_response.find("1. Understanding of the code", first_occurrence + 1)
116
- if second_occurrence != -1:
117
- ai_response = ai_response[second_occurrence:]
118
- else:
119
- # If we can't find a second occurrence, start from the first one
120
- ai_response = ai_response[first_occurrence:]
121
-
122
- return ai_response
123
- else:
124
- return "Error: Unable to extract the AI's response. Here's the full output:\n\n" + full_response
125
-
126
 
127
  # Create Gradio interface
128
  iface = gr.Interface(
 
50
  # Move model back to CPU to free up GPU memory
51
  model = model.cpu()
52
  torch.cuda.empty_cache()
53
+
54
 
55
  @spaces.GPU()
56
  def code_review(code_to_analyze):
57
+ two_shot_prompt = f"""First, understand the given code:
58
+ Analyze the purpose, functionality, input sources, output destinations, and logical flow of the code. Identify any security-sensitive operations.
59
+
60
+ Now, review the following code:
61
+
62
+ {code_to_analyze}
63
+
64
+ Provide a brief understanding of the code.
65
+
66
+ Second, correlate the context with the input code and find vulnerabilities:
67
+ Based on your understanding of the code, identify potential security issues, logic vulnerabilities, and areas for improvement. Consider common vulnerabilities, possible misuse, input handling, and use of security functions.
68
+
69
+ Now, for the same code:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
  {code_to_analyze}
72
 
73
  Provide a detailed review including:
74
+ 1. Potential security issues
75
+ 2. Potential logic vulnerabilities
76
+ 3. Suggestions for improvement
 
77
 
78
  Start each section with its number and title."""
79
 
80
+ full_response = get_completion(two_shot_prompt, model, tokenizer)
81
 
82
+ # Return the full response without any processing
83
+ return full_response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
  # Create Gradio interface
86
  iface = gr.Interface(