通俗易懂的数据库设计三大范式

  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

  在实际开发中最为常见的设计范式有三个:

  1.第一范式

跨站脚本攻击XSS的原理与预防

简介:

用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTMLJavaScript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。

类型:

一. 反射型XSS(非持久型XSS

反射型XSS只是简单地把用户输入的数据“反射”给浏览器。黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。

二. 储存型XSS(持久型XSS

存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。如:黑客将一段恶意JavaScript代码写入博客,那么所有访问该博客的用户,都会在他们的浏览器中执行这段JavaScript代码。

三. DOM Based XSS

这种类型的XSS并未按照“数据是否保存在服务器端”来划分,DOM Based XSS本质上也是反射型XSS。单独划分出来,是因为DOM Based XSS的形成原因比较特别。通过修改页面的DOM节点,形成的XSS,称之为DOM Based XSS

PHP防止SQL注入的一种思路

问题描述:

  如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子:

1
2
3
$unsafe_variable=$_POST[‘user_input’];
 
mysql_query(“INSERT INTO `table` (`column`) VALUES (‘”.$unsafe_variable.”‘)”);

  因为用户的输入可能是这样的:

1
value’); DROP TABLE table;–

  那么SQL查询将变成如下:

1
INSERTINTO`table` (`column`)VALUES(‘value’);DROPTABLEtable;–‘)

  应该采取哪些有效的方法来防止SQL注入?

PHP二维数组排序的具体方法

PHP本身就存在一个多维数据排序的函数

array_multisort() 函数对多个数组或多维数组进行排序,可以用来一次对多个PHP二维数组排序进行排序,或者根据某一维或多维对多维数组进行排序。

参数中的数组被当成一个表的列并以行来进行排序 – 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC – 默认,按升序排列。(A-Z)
SORT_DESC – 按降序排列。(Z-A)
随后可以指定排序的类型:

关于夜骑,不得不说、必须得说的事

先说说对方——汽车照明
如果没有良好路灯,在夜间,自行车与行人几乎是不可视的,车上的反光标记会因车灯照射形成光点引起注意,但司机看到的仅仅是路边有个光点。同时,汽车是快速运动的,同样照度下,视觉清晰程度远低于行人,所以必须用照度来补偿。。。

jQuery对象入门级介绍

你是否曾经见过像  $(“.cta”).click(function(){})这样的JavaScrip代码?或许你还会思考下$(‘#X’) 是什么,如果看到这些你都觉得摸不着头脑,那请一定要读完这篇文章。如果你觉得上述的代码片段是不能正常工作的,那请先看一些jQuery的代码范例,你会发现链接中的代码都是这样的结构。

这篇文章将会分析下面代码片段(动画化一个方形)中出现的一些关键知识点。你可能不会经常接触这样的代码,但了解一下这段代码的机制有助于你理解jQuery:

1
2
3
4
5
 $(document).ready(function(){
     $(“button”).click(function(){
         $(“div”).animate({height:”toggle”}).append(“hi”);
     });
 });

我们将会逐字逐句地解释上述的代码,告诉你JavaScript函数、jQuery对象还有事件驱动编程的具体细节。希望看完这篇文章以后,再遇到神秘的jQuery代码时你不会再头疼。

$是什么?

OAuth 2.0系列教程(十) 资源拥有者密钥证书授权请求和响应

原文地址:http://tutorials.jenkov.com/oauth2/resource-owner-credentials-request-response.html

资源拥有者者密钥证书授权包含单个的请求+响应。 资源拥有者密钥证书授权请求 请求包含下面的参数:

grant_type 必须。必须设置到密码中。
username 必须。UTF-8编码的资源拥有者用户名。
password 必须。UTF-8编码的资源拥有者密码。
scope 可选。授权的作用域。

OAuth 2.0系列教程(九) 契约请求和响应

契约授权包含一个请求和一个响应。 契约授权请求 契约授权请求包含下面的参数:

response_type 必须。必须被设置在令牌中。
client_id 必须。当客户端被注册时,有授权服务器分配的客户端标识。
redirect_uri 可选。由客户端注册的重定向URI。
scope 可选。请求可能的作用域。
state 可选(推荐)。任何需要被传递到客户端请求的URI客户端的状态。