[英]how do I protect an sql entry from a “meta” injection?
我有一個允許用戶保存圖像的網站。 我用“ mysql_real_escape_string”對mysql插入進行了清理,但是有人去了他的圖像描述中輸入了帶有內容重定向的元數據,以便每當我們的站點加載(也加載最新的圖像)時,它就會重定向。
如何清理字符串或sql查詢以防止這種情況?
提前致謝!
對於此特定示例,可以通過在輸出數據時使用htmlentities避免它:
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
要注意的是,它將破壞您保存的東西中幾乎不使用任何 HTML。 如果您試圖允許某些標簽而不允許其他標簽,那么它很快就會變得復雜得多。
mysql_real_escape_string
僅用於防止sql注入。
為了防止XSS,您需要使用htmlspecialchars或htmlentities清理html內容。
我認為您應該使用htmlspecialchars();
每次在從數據庫中放入任何東西之前以及在將用戶輸入提交到數據庫之前,都使用准備好的語句+ htmlspecialchars();
[可選的]
這是您可以做的幾件事
strip_tags()
mysqli_*
函數代替mysql_
htmlentities()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.