我在一个网站上使用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/