1+ require 'sequel'
2+
3+ class UsersController < ActionController ::Base
4+ def sequel_handler ( event :, context :)
5+ name = params [ :name ]
6+ conn = Sequel . sqlite ( "sqlite://example.db" )
7+
8+ # BAD: SQL statement constructed from user input
9+ conn [ "SELECT * FROM users WHERE username='#{ name } '" ]
10+
11+ # BAD: SQL statement constructed from user input
12+ conn . run ( "SELECT * FROM users WHERE username='#{ name } '" )
13+
14+ # BAD: SQL statement constructed from user input
15+ conn . fetch ( "SELECT * FROM users WHERE username='#{ name } '" ) do |row |
16+ puts row [ :name ]
17+ end
18+
19+ # GOOD: SQL statement is not constructed from user input
20+ conn [ "SELECT * FROM users WHERE username='im_not_input'" ]
21+
22+ # BAD: SQL statement constructed from user input
23+ conn . execute "SELECT * FROM users WHERE username=#{ name } "
24+
25+ # BAD: SQL statement constructed from user input
26+ conn . execute_ddl "SELECT * FROM users WHERE username='#{ name } '"
27+
28+ # BAD: SQL statement constructed from user input
29+ conn . execute_dui "SELECT * FROM users WHERE username='#{ name } '"
30+
31+ # BAD: SQL statement constructed from user input
32+ conn . execute_insert "SELECT * FROM users WHERE username='#{ name } '"
33+
34+ # BAD: SQL statement constructed from user input
35+ conn << "SELECT * FROM users WHERE username='#{ name } '"
36+
37+ # BAD: SQL statement constructed from user input
38+ conn . fetch_rows ( "SELECT * FROM users WHERE username='#{ name } '" ) { |row | }
39+
40+ # BAD: SQL statement constructed from user input
41+ conn . dataset . with_sql_all ( "SELECT * FROM users WHERE username='#{ name } '" )
42+
43+ # BAD: SQL statement constructed from user input
44+ conn . dataset . with_sql_delete ( "SELECT * FROM users WHERE username='#{ name } '" )
45+
46+ # BAD: SQL statement constructed from user input
47+ conn . dataset . with_sql_each ( "SELECT * FROM users WHERE username='#{ name } '" ) { |row | }
48+
49+ # BAD: SQL statement constructed from user input
50+ conn . dataset . with_sql_first ( "SELECT * FROM users WHERE username='#{ name } '" )
51+
52+ # BAD: SQL statement constructed from user input
53+ conn . dataset . with_sql_insert ( "SELECT * FROM users WHERE username='#{ name } '" )
54+
55+ # BAD: SQL statement constructed from user input
56+ conn . dataset . with_sql_single_value ( "SELECT * FROM users WHERE username='#{ name } '" )
57+
58+ # BAD: SQL statement constructed from user input
59+ conn . dataset . with_sql_update ( "SELECT * FROM users WHERE username='#{ name } '" )
60+
61+ # BAD: SQL statement constructed from user input
62+ conn [ :table ] . select ( Sequel . cast ( :a , name ) )
63+
64+ # BAD: SQL statement constructed from user input
65+ conn [ :table ] . select ( Sequel . function ( name ) )
66+ end
67+ end
0 commit comments