Code Explainers
Code explainers tagged #input-validation
go
func UploadChunk(c *gin.Context) { uploadID := c.Param("uploadID") if !validUploadID.MatchString(uploadID) { c.JSON(http.StatusBadRequest, gin.H{"error": "invalid upload id"})
Resumable chunked uploads in Gin
file-upload
content-range
streaming
Advanced
9 steps
go
package handlers import ( "encoding/json"
Parsing search query params in a Go handler
http-handlers
input-validation
defaults
Intermediate
7 steps
go
func ListProducts(c *gin.Context) { allowed := map[string]string{ "category": "category", "brand": "brand",
Safe query filtering in a Gin handler
input-validation
whitelisting
query-building
Intermediate
7 steps
ruby
class SearchController < ApplicationController def index @query = params[:q].to_s.strip end
Live search suggestions in a Rails controller
controllers
sql-injection
query-building
Intermediate
6 steps
typescript
import sanitizeHtml from "sanitize-html"; interface RichTextOptions { allowImages?: boolean;
Building a configurable HTML sanitizer allowlist
sanitization
xss-prevention
allowlist
Intermediate
7 steps
php
<?php namespace App\Support;
Normalizing phone numbers to E.164 in PHP
input-validation
normalization
regular-expressions
Intermediate
8 steps
go
func ListArticles(db *gorm.DB) gin.HandlerFunc { return func(c *gin.Context) { page, err := strconv.Atoi(c.DefaultQuery("page", "1")) if err != nil || page < 1 {
Building a paginated list endpoint in Gin
pagination
query-parameters
input-validation
Intermediate
8 steps
go
package handlers import ( "encoding/json"
Hardening JSON decoding in Go HTTP handlers
json
error-handling
http
Intermediate
8 steps
typescript
interface PaginationParams { totalItems: number; pageSize: number; currentPage: number;
Building safe pagination metadata in TypeScript
pagination
input-validation
pure-functions
Intermediate
7 steps
javascript
const express = require('express'); const router = express.Router(); const db = require('../db');
Building a paginated articles endpoint in Express
pagination
input-validation
async-await
Intermediate
8 steps
go
type SensorReading struct { DeviceID string `json:"device_id" binding:"required"` Temperature float64 `json:"temperature"` RecordedAt time.Time `json:"recorded_at" binding:"required"`
Streaming NDJSON ingestion in Gin
streaming
batching
json-decoding
Advanced
10 steps
go
package search import ( "net/url"
Building a query URL from a Filter struct in Go
url-encoding
struct-methods
input-validation
Intermediate
8 steps
java
@RestController @RequestMapping("/api/files") public class FileUploadController {
Handling secure file uploads in Spring
file-upload
input-validation
path-traversal
Intermediate
10 steps
ruby
class ArticlesController < ApplicationController DEFAULT_LIMIT = 25 MAX_LIMIT = 100
Cursor-based pagination in a Rails controller
pagination
cursor
query-building
Intermediate
7 steps
php
<?php class ImageUploadService {
Validating file uploads safely in PHP
file-upload
input-validation
security
Intermediate
8 steps
php
<?php namespace App\View;
Building a safe HTML escaper in PHP
security
xss
escaping
Intermediate
6 steps
php
<?php final class ProductRepository {
Safe SQL pagination with PDO in PHP
pagination
input-validation
prepared-statements
Intermediate
7 steps
python
from flask import Blueprint, render_template, request, abort from sqlalchemy import select from .models import Article
Paginating articles in a Flask Blueprint
pagination
blueprints
input-validation
Intermediate
6 steps