【发布时间】:2014-02-05 06:48:39
【问题描述】:
使用PDO 你会遇到类似这样的行:
$dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$dbh->prepare("SELECT * FROM REGISTRY where name = ?");
$dbh->prepare("UPDATE table_name SET col1= ?");
这些以在Db 中存储数据、从数据库中获取数据以及更新在数据库。
在学习PDO 时,强烈强调不要打扰 Sanitizing 你的data,PDO 会做消毒....你可以信任 100%....
现在,当涉及到来自查询的输出 DATA 的安全性时,例如:
"SELECT * FROM table_name",
像:OR 1=1 这样的恶意代码不会影响Database... 但是,既然PDO 在存储在DB 中时只对DATA 进行了对DB 的保护,在输出上,如果column 包含恶意 代码如"<script>alert("Hacked")</script>",这似乎是alert 用户浏览器中的"Hacked" .
对此有什么预防措施?
我们是否必须htmlentities 或htmlspecialchars data 手动 或保护DATA 的存储、检索和显示的最佳方法是什么?
【问题讨论】:
-
Thx... 那么您所知道的在您的应用程序(或其他负责输出的层)中注意这一点的最佳方法是什么乙>? ...有趣,我相信很多人都没有意识到这一点...请您的建议受到高度重视
-
我需要“标记”某事作为答案...“回答”而不是评论?...我认为您的观点是扎实而重要的。如果您的答案中包含很少的代码,我将不胜感激。感谢这些教育评论。