Ben bir kullanıcı CSS ve bir Microsoft SQL veritabanında saklanır HTML parçalarını değiştirmek sağlayacak basit bir arayüzü yapıyorum. Bu arayüz PHP5 ve adodb kullanır.
Nedense bu formu bir veya daha fazla tek tırnak içeren herhangi bir giriş reddeder. Bu dize, örneğin, izin verilmez: "background-image: url ('paper.gif');"
Ben ADOdb SQL enjeksiyon saldırıları önlemek için agresif tek tırnak filtreliyor olabilir şüpheli. Saklanmasına tek tırnak karakteri için izin vermek için PHP kullanıcı girişi kaçmak için bir yolu var mı?
Ben otomatik olarak çift tırnak tüm tek tırnak dönüştürerek kabul ettik, ama o kullanıcının biçimlendirme kırmaya potansiyeline sahip gibi görünüyor.
Bu muhtemelen çok yararlı değil, ama burada ben kullanıyorum test bir örnek:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252">
<title>Edit website</title>
</head>
<body>
<h1>CSS Test</h1>
<?php
include_once ('database.php');
$table = "[User Site]";
if (!isset($_REQUEST['dbname'])) {
return false;
} else {
$dbname = $_REQUEST['dbname'];
$db = Database::singleton($dbname);
//Push any new CSS to the database
if (isset($_POST['css'])) {
$css = $_POST['css'];
$sql = "UPDATE " . $table .
" SET html='" . $html . "', css='" . $css . "' " .
" WHERE dbnameId='" . $dbname . "'";
$db->Execute($sql);
}
//Fetch any CSS from the database
$sql = "SELECT * FROM " . $table . " WHERE dbnameId='" . $dbname . "'";
$data = recordToArray($db->Execute($sql));
echo "<p>";
$css = $data[0]['css'];
}
$rows = 20;
$cols = 80;
?>
<!-- Show the user a form -->
<form action="test.php" method="post">
CSS:<br> <textarea rows="<?php echo $rows ?>" cols="<?php echo $cols ?>" name="css"><?php echo $css ?></textarea><p>
<input type="hidden" name="dbname" value="<?php echo $dbname ?>" />
<input type="submit" value="Update CSS" />
</form>
</p>
</body></html>