2010-09-15 61 views
1

我有一个网站使用PDO编写的PHP。我现在用的是bindParam()函数来绑定到一个SQL INSERT查询:PHP和PDO阻止Javascript注入

("insert into Table (id, date, data) VALUES (?, ?, ?)") 

,但我能够插入包含

"<script>window.location="google.com"</script>" 

如何防止这样的字符串?

谢谢!

回答

2

PDO是不会阻止你这样做。您需要将自己绳子的护理:

  1. 如果你不希望在所有<script>标签,使用strip_tags
  2. 如果你希望这些标签,但不想让他们去执行,然后使用htmlentities
0

假设你的意思

<script>window.location="google.com"</script> 

你应该担心显示行上注入保护,如您不想与HTML实体来填充数据库。

在显示数据库内容的页面上使用htmlspecialchars() [1]。

[1] http://www.php.net/manual/en/function.htmlspecialchars.php

+0

你是什么意思?我不应该阻止这些进入数据库首先? – 2010-09-15 03:32:08

+0

你可以过滤输入到数据库或过滤输出到浏览器,只要确保你不过滤两次。目前我的首选是过滤输出,以免数据库散布HTML实体。 – Andrew67 2010-09-15 18:05:54