我在一个网站上使用mod_rewrite来处理内容页,我试图使用mod_rewrite来管理URL,使其不受SQL injections的限制,因为用户可以创建这样的页面内容:

http://site.com/content-type/Page-created-by-user

我的怀疑来自于他们插入了如下内容:
http://site.com/architect/Giovanni+Dall'Agata

我需要插入'字符,因为我可以有这样的名字,例如著名的架构师,但我不知道我是否能保证数据的安全,以及如何用这个字符防止SQL injections
我应该做些特别的事来防止袭击吗?
我正在使用PDO class中的PHP如下:
$architect = strip_tags (trim ($_REQUEST["architect"]));

// pdo class etc..
$pdo_stmt->bindParam (":arch", $architect, PDO::PARAM_STR);
// and the other code here...

用户不能用这些字符创建页面:< > / \ * ? =我应该禁止'"吗?
或者我应该只允许其中一个'"字符,或者我可以一起使用它们来保证服务器的安全吗?

最佳答案

$stmt->bindParam(和bindValue,通常是准备好的语句)对于SQL注入是安全的。所有严肃的SB框架都支持向查询添加参数的方法,并且以这种方式添加的值都会被清除。您应该始终这样做,不要将来自用户的变量数据(请参阅注释)手动插入到SQL查询字符串中。
这仍然留下了XSS注入的问题,它更容易丢失(尽管也不太危险);要避免它们,请确保始终使用htmlspecialchars($var,ENT_QUOTES)(或urlencode,取决于上下文)。

关于php - URL和mod_rewrite:使用许多特殊字符,并使数据免受攻击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4422039/

10-10 17:27
查看更多