在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、SQL注入攻击(SQL Injection)攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击过程类如: $query = 'SELECT * from Users WHERE login = ' . $username . ' AND password = ' . $password; 3.攻击者在用户名字和密码输入框中输入'或'1'='1之类的内容; SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'; 5.服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比; 解决方法: SQL组装的时候,对外部变量以及所有变量都进行过滤: PHPWIND中,可以用sqlEscape、sqlImplode、sqlSingle、sqlMulti等函数过滤组装。过滤主要是一些’单引号这些可以破坏SQL组装的数据。 /** * SQL组装-私有SQL过滤 * @param string $val 过滤的值 * @param int $iskey 0-过滤value值,1-过滤字段 * @return string */ private function build_escape_single($val, $iskey = 0) { if ($iskey === 0) { if (is_numeric($val)) { return " '" . $val . "' "; } else { return " '" . addslashes(stripslashes($val)) . "' "; } } else { $val = str_replace(array('`', ' '), '', $val); return ' `'.addslashes(stripslashes($val)).'` '; } } 二、跨网站脚本攻击(Cross Site Scripting, XSS)攻击者将恶意代码注入到网页上,其他用户在加载网页时就会执行代码,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。这些恶意代码通常是JavaScript、HTML以及其他客户端脚本语言。 <?php echo "欢迎您,".$_GET['name']; 如果传入一段脚本<script>[code]</script>,那么脚本也会执行。用这样的URL将会执行JavaScript的alert函数弹出一个对话框:http://localhost/test.php?name=<script>alert(123456)</script> /** * 安全过滤类-过滤HTML标签 * Controller中使用方法:this−>controller−>filterhtml(value) * @param string $value 需要过滤的值 * @return string */ public function filter_html($value) { if (function_exists('htmlspecialchars')) return htmlspecialchars($value); return str_replace(array("&", '"', "'", "<", ">"), array("&", """, "'", "<", ">"), $value); } 三、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。 采用类似随即码或者令牌的形式,让用户操作唯一性。 (每次用户登录网站随机生成一个token,存放在cookie中,用户的所有操作中都需要经过token验证)
带上这个init_token,然后每次请求都去验证一下就好了。token在浏览器打开的时候生效,关闭浏览器再打开浏览器的时候会变化
四、Session固定攻击(Session Fixation)攻击者预先设定session id,让合法用户使用这个session id来访问被攻击的应用程序,一旦用户的会话ID被成功固定,攻击者就可以通过此session id来冒充用户访问应用程序。 session_regenerate_id(TRUE);//删除旧的session文件,每次都会产生一个新的session id。默认false,保留旧的session 2.更改session的名称 session_name("mysessionid"); 3.关闭透明化session id int_set("session.use_trans_sid", 0); 4.只从cookie检查session id int_set("session.use_cookies", 1);//表示使用cookies存放session id int_set("session.use_only_cookies", 1);//表示只使用cookies存放session id 5.使用URL传递隐藏参数 $sid = md5(uniqid(rand()), TRUE)); $_SESSION["sid"] = $sid;//攻击者虽然能获取session数据,但是无法得知$sid的值,只要检查sid的值,就可以确认当前页面是否是web程序自己调用的 五、文件上传漏洞攻击(File Upload Attack)攻击者利用程序缺陷绕过系统对文件的验证与处理策略将恶意代码上传到服务器并获得执行服务器端命令的能力。
参考文档: https://www.cnblogs.com/luyucheng/p/6234524.html https://www.cnblogs.com/luomingui/p/8407324.html (侵删) |
2022-08-30
2022-08-17
2022-11-06
2022-08-17
2022-08-15
请发表评论