Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan
SQL Injection Check Function
00:00
5 left

SQL Injection Check Function

HardPython

Problem

Niantic services receive user-controlled strings from Pokémon GO and Pokémon Sleep clients. Implement a detector for injection-like payloads that may be disguised with URL encoding, HTML entities, Unicode compatibility characters, comments, or inconsistent casing.

Return True when the input contains one of these suspicious structures outside a quoted literal:

  1. A statement separator ;.
  2. A line comment beginning with -- or a block comment beginning with /*.
  3. The word sequence union select.
  4. The token sequence or 1 = 1, allowing arbitrary whitespace.
  5. An unmatched single or double quote.

Quoted text must be ignored while searching for keyword and numeric patterns. For example, "union select" is harmless because the words occur inside a quoted literal, while ' union select is suspicious because the quote closes before the keywords.

Formal Specification

Write detect_injection(value), where value is a non-empty string. Return a Boolean. Before scanning, repeatedly URL-decode and HTML-decode the value at most three times, then apply Unicode NFKC normalization and lowercase conversion. Decoding stops early when a pass makes no change.

Constraints

  • 1 <= len(value) <= 10^5
  • The input may contain Unicode characters.
  • The input may contain up to three nested URL or HTML encoding layers.
  • The detector must run in O(n) time after normalization.
  • Quoted literals are delimited by single or double quotes and do not support escaping.

Function Signature

def detect_injection(value):
Interviewer

Your question is SQL Injection Check Function. Start with the requirements in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePython 3
Sign up free to run your codeLog inLn 2
Run your code to see test output here.