优化、安全

优化
1.创建索引
普通索引 : 加速搜索 (index/key)
唯一索引 : 加速搜索 + 确保字段的值唯一 (unique)
主键索引 : 加速搜索 + 确保字段的值唯一 + 非空
全文索引 : 大文本,(myisam引擎支持,不支持中文,使用sphinx替代)
基本思路:外键都加上普通索引(通过外键连表查询时速度)
2.扩展:如果网站有一个“站内搜索”,会搜索出所有帖子的内容,图片的描述,相册的描述等,应该使用sphinx(数据量大的情况下)
不用sphinx类似功能可能是这样做:
SELECT * FROM WHERE content LIKE '%XXX%'--> 无法优化:肯定全表扫描 (like 以%开头)
3.
(核心思路:减少数据库的链接与查询)
a.缓存 (如5秒缓存)   动态简单缓存 成本低
b.把SQL语句的结果缓存到MEMCACHE中  (集群时用)
$Mem = new memcache();
$sql = 'SELECT XXXX';
$sql_name = md5($sql);
if(!$data = $mem->get($sql_name))
{
$data = get($sql_name); // 查询数据为
$mem->set($sql_name,$data);
}
c.生成静态页 --> 静态内容
4. 论坛的优化,如果数据量非常大时(一台服务器支持不了)横向分表
1 :1~2亿
2 : 2`~3亿
3 : 3~4亿
4 : 4~5亿
post_1
post_2
post_3
memcahe缓存最新的100条记录
插入时先根据ID算出是第几张表

纵向分表 (字段大小不平衡)
post
------------------------------------------
id title addtime
post_content
---------------------------------
pid content

5.如果要做一个图片分享(视频,软件下载)类网站主要瓶镜在哪?
硬盘io (硬盘阵列)
带宽 (CDN)


6.pv和ip
pv :点击量
ip : 有多少个人

安全

1.服务器安全
根据服务器开启的端口判断出都运行了哪些软件,然后查找软件的漏洞
解决办法:
1.尽管只运行必要的软件
2.如果些软件也必须要用加个防火墙
3.更新自己的软件

2。网站程序安全
  SQL注入
   1. addslashes() : 在单引号前面加反斜线转义 I'm => I\'m
   2. 把用户的提交的数据类型检查
   3. 逻辑错误,程序上的漏洞
   如,http://www.sns.com/index.php/Group/delete/id/120
   要先判断一下要删的日志(帖子等)是否是该用户的。
  XXS(跨站脚本攻击)
   用户提交一段css,JS代码,然后代码运行了。\
   禁止外站提交
   1.$_SERVER['HTTP_REFERER'] : 从哪里发的请求
   漏洞:HTTP可以被模拟
   2.session中存一个form表单验证字符串,通过程序放到表单,这个字符串只有程序知道,所以外站自己模拟时不知道这个字符串是什么?提交时判断表单中提交字符串是否和session中的相同。
   过滤(网上有一些现成的类)用户提交的所有的数据


我们网站需要改进的漏洞:
1.SQL注入,登录的地方,应该把所有用户提交的数据用addslashes过滤
2.xxs所有用户提交的数据,如(描述,内容,名称)等需要过滤掉所有危险的代码(从网上下载一个成熟过滤类)
3.表单防外站提交







你可能感兴趣的:(优化)