薛强的参数过滤

阅读: 评论:0

薛强的参数过滤

薛强的参数过滤

我提到了两个问题:一是SQL Injection攻击,一个是XSS攻击。

对于前者,需要避免的是直接把用户输入嵌入到SQL里,例如:"SELECT * FROM tbl_user WHERE id={$_GET['id']}"。
恶意用户可以让$_GET['id']等于"1; DELETE FROM tbl_user",这样就把所有的用户数据都删除了!非常危险!

解决办法有好几种。最简单的就是用param binding,请阅读PHP PDO获得相关知识。如果知道id是整数,也可以先把输入强制为整数。或者如果id是字串,可以用CDbConnection::quoteValue()把输入加上引号。如果你用的是AR,那么save()函数自动会使用param binding。如果你用findAll()之类的函数,自己生成condition部分,那就要特别小心不要直接嵌入输入。

XSS攻击主要是要避免直接显示用户的输入数据。例如echo $user->description(假设description的数据来自用户的输入)。恶意用户可以让id为一段js代码,使得其它用户查看该页面后隐式执行该代码,从而被恶意用户获得登录cookie等安全信息。

解决办法很简单,就是用CHtml::encode()。如果输入是HTML,可以用CHtmlPurifier::purify()来过滤有害代码。 

本文发布于:2024-01-30 20:27:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661762122616.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   薛强
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23