---
title: "Räcker detta som skydd mot databasinjektioner?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/155001-räcker-detta-som-skydd-mot-databasinjektioner"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "vic"
published: "2006-12-18T22:49:14.000Z"
updated: "2006-12-23T20:44:53.000Z"
replies: 7
views: 740
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/155001-räcker-detta-som-skydd-mot-databasinjektioner"
---

# Räcker detta som skydd mot databasinjektioner?

## #1 — vic, 2006-12-18T22:49Z

Som rubriken lyder, fungerar detta:

```php
function db_escape($post)
	{
	if(is_string($post))
   		{
		if(get_magic_quotes_gpc()) 
	 		{
			$post = stripslashes($post);
			}
     
	 	return mysql_real_escape_string($post);
   		}

	foreach($post as $key => $val) {$post[$key] = db_escape($val);}
	return $post;
	}

/// PREVENT INJECTIONS
if(isset($_POST))
	{
	$_POST = db_escape($_POST);
	}
```

Bör jag ha med något mer?

Permalänk: https://www.webforum.nu/p/155001

## #2 — Forsberg, 2006-12-23T09:08Z

Det där bör räcka finfint!

Permalänk: https://www.webforum.nu/p/1915422

## #3 — spango, 2006-12-23T10:42Z

Det känns en aning suboptimalt att eskejpa alla värden i \_POST, både prestandamässigt (mindre problem) och principiellt (större problem) - det är att angripa problemet från fel håll. 

För det första ändrar du på all indata vilket kan ställa till det på andra ställen. 

För det andra pajar det lokaliteten i koden - när du tittar på de rader som faktiskt interagerar med databasen kan du inte garantera att frågorna är säkra, utan måste kolla någon annanstans att du verkligen kört alla värden genom db_escape.

För det tredje är det inte nödvändigtvis säkert. <http://ilia.ws/archives/103-mysql_real_escape_string-versus-Prepared-Statements.html>

Kort sagt, prepared statements är det enda rätta. Funkar dock ej i PHP 4 för MySQL, vilket är nära nog kriminellt dåligt.

Permalänk: https://www.webforum.nu/p/1915438

## #4 — colione, 2006-12-23T16:27Z

det ska ju vara fixat enligt mysqls hemsida:
<http://dev.mysql.com/doc/refman/5.0/en/news-5-0-22.html>

Permalänk: https://www.webforum.nu/p/1915485

## #5 — spango, 2006-12-23T18:06Z

Det är dock fortfarande sämre att eskejpa själv än att använda prepared statements :)

Permalänk: https://www.webforum.nu/p/1915509

## #6 — vic, 2006-12-23T19:26Z

förstår dock inte vad du menar med prepared statements? Alla formulär interagerar med databasen, därför escapar jag alla $\_POST

Permalänk: https://www.webforum.nu/p/1915518

## #7 — spango, 2006-12-23T19:45Z

> **vic skrev:**
>
> förstår dock inte vad du menar med prepared statements?

Prepared statements, parametriserade frågor, går ut på att man inte stoppar in värdena direkt i SQL-frågan. Har diskuterats livligt i ASP-forumet men mindre här. Det är, i princip, det enda sättet att hundraprocentigt skydda sig mot SQL-injektion. Dessutom ger det portablare kod och är enklare att använda.
<http://www.php.net/manual/sv/function.mysqli-prepare.php>

> **vic skrev:**
>
> Alla formulär interagerar med databasen, därför escapar jag alla $\_POST

Ja, men det har inget med saken att göra. Det är inget som garanterar att det kommer vara så i framtiden, och det kräver fortfarande att du kommer ihåg att göra det.

Permalänk: https://www.webforum.nu/p/1915520

## #8 — vic, 2006-12-23T20:44Z

> **spango skrev:**
>
> Prepared statements, parametriserade frågor, går ut på att man inte stoppar in värdena direkt i SQL-frågan. Har diskuterats livligt i ASP-forumet men mindre här. Det är, i princip, det enda sättet att hundraprocentigt skydda sig mot SQL-injektion. Dessutom ger det portablare kod och är enklare att använda.
> <http://www.php.net/manual/sv/function.mysqli-prepare.php>

Ok, får ta mig tid och titta igenom det...

> **spango skrev:**
>
> Ja, men det har inget med saken att göra. Det är inget som garanterar att det kommer vara så i framtiden, och det kräver fortfarande att du kommer ihåg att göra det.

hehe, nä jag kan inte veta med säkerhet att det kommer vara så för all framtid på denna webbplats men jag vet att det kommer vara så under en viss tid (då vi ansvarar för det hela), om projektet sen anses hållbart, kommer   nog mycket av systemet att göras om, det råder tidsbrist i nuläget!

Permalänk: https://www.webforum.nu/p/1915531

---

Tråden på webben: https://www.webforum.nu/amne/php/155001-räcker-detta-som-skydd-mot-databasinjektioner
