-
YII::$app的作用是:获取得到E框架的应用主体,request请求组件查看全部
-
article下的post操作查看全部
-
url编码查看全部
-
xss攻击:跨站脚本攻击(cross site scripting)查看全部
-
网站攻击方式:xss攻击、csrf攻击、sql注入、文件上传漏洞查看全部
-
xss攻击:存储型攻击和反射性攻击,lexer解析。 csrf攻击:get型攻击和post型攻击。 sql注入攻击:PDO占位符。 文件上传漏洞:绕过类型检测和不要轻易相信用户提交文件。查看全部
-
emulatePrepare查看全部
-
emulate查看全部
-
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ /** * 通过PDO操作数据库的方式来防止sql注入 * 如果在数据库配置中'emulatePrepare'=>false,则占位符转义是在数据库端 * 运行下面代码,sql语句会分成两部分: * 向MySQL传递第一份数据:select * from users where name=? * 向MySQL传递第二份数据:zhangsan,会在MySQL进行转义,就算传过来的是中文和单引号,也会把单引号转义之后再执行sql语句,就防止了sql注入 */ public function actionTest1(){ $user = (new \yii\db\Query()) ->select('*') ->from('users') ->where('name=:name',[':name'=>'zhangsan']) ->one(); print_r($user); } }查看全部
-
例子一: select * from users where name='zhangsan' and password='123456' name = zhansan' -- 那么查询语句就变成 select * from users where name='zhangsan' --' and password='123456' 在数据库中,--表示注释,则后面的会被忽略,如果这是管理员用户登录时的验证,则不需要密码就可以正常的登录到系统中 例子二: select * from users where name='zhangsan' and password='123456' name = '; drop table users; -- 那么查询语句就变成 select * from users where name=' '; drop table users; --' and password='123456' 如果运行,会把users表删除 例子三: 在一个论坛查找积分在60以下且关键字是youyiku的帖子,会运行以下sql语句 select * from articles where score<60 and title like '%youyiku%'; 如果查找关键字:' or 1=1 -- select * from articles where score<60 and title like '%' or 1=1 --%' 就突破了这个限制,会把所有帖子查找出来查看全部
-
防范csrf: 1,验证码:比较有效,降低用户体验; 2,referer头,需要考虑正常访问没有referer头的情况;值是这次请求的URL,是哪个页面的请求 3,token, 响应请求时返回的防伪标志,服务器随机生成的token,浏览器接收到token,在请求时带上token,服务器对比,来检测有没有受到CSRF攻击查看全部
-
伪造post请求 1、伪造form表单,要伪造相同表单控件,同样提交到原来的后台所处理页面 2、用户要先登录到原来form表单所在的系统 3、诱导用户来到我们的form表单,自动提交到目标服务器进行修改删除操作查看全部
-
get型的CSRF攻击: 1、该用户登录了某银行网站 2、构造了某银行转账URL:http://www.xxxbank.com/index.php?from=zhangsan&to=lisi&money=400 3、用户点击了这个链接,就会执行转账过程,完成一次CSRF攻击查看全部
-
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ public function actionTest1(){ \YII::$app->response->headers->add('X-XSS-Protection','0');//作用:告诉浏览器,如果待会传递过来的是一段js代码,浏览器不用进行一些过滤等的操作,这样浏览器就不会干扰代码的运行,js代码能够顺利执行,在实际工作中是不能添加的 $script = \YII::$app->request->get('script'); // echo $script; echo \yii\helpers\Html::encode($script);//把传过来的参数进行HTML实体编码 } public function actionTest2(){ \YII::$app->response->headers->add('X-XSS-Protection','0'); $script = \YII::$app->request->get('script'); echo \yii\helpers\HtmlPurifier::process($script);//这个函数使用了lexer技术,可以识别HTML里的JS、HTML、CSS三种代码,并把js过滤掉 } }查看全部
-
YII框架第一种防范xss(转码):Html::encode($str);内部其实调用了PHP的htmlspecialchars函数,把预定义的字符串转换成HTML实体查看全部
举报
0/150
提交
取消