前言 虽然本文是基于YII1.1,但其中提到的安全措施适用于多数web项目安全场景,所以翻译此文,跟大家交流.原文地址. 目录 安全基本措施... 2 验证与过滤用户的输入信息... 2 原理... 2 客户端验证... 2 YII如何防范... 2 跨站脚本攻击XSS. 4 原理... 4 YII如何防范... 5 SQL注入... 7 原理... 7 YII如何防范... 8 跨站请求伪造CSRF. 12 配置WEB服务器... 12 PHP项目一些有用的指令... 15 授权... 16…
搞java的同学们可能对无副作用这个概念比较陌生,这是函数式编程中的一个概念,无副作用的意思就是: 一个函数(java里是方法)的多次调用中,只要输入参数的值相同,输出结果的值也必然相同,并且在这个函数执行过程中不会改变程序的任何外部状态(比如全局变量,对象中的属性,都属于外部状态),也不依赖于程序的任何外部状态. 比如下面的两个方法,就可以认为是无副作用的. /** * * @author leo * */ public class NoSideEffect { public static i…
上机课自己写的代码 两个图形原理都是一样的 1.一共有仨个循环 注意搞清楚每一层循环需要做的事情 2.第一层循环:是用来控制行数 3.第二层循环控制打印空格数 4.第三层循环是用来循环输出星星 import java.util.*; public class demo1{ public static void main(String[] args){ for(int i=1;i<=5;i++){ for(int j=5;j>i;j--){ System.out.print(" &qu…
今天来学习外键的使用,用外键来连接数据库中的两个表. 当我们的tutorials非常多的时候,目前的显示方式就会使得页面非常凌乱.我们可以考虑把这些教程分为不同的系列,页面只显示标题以及概要等信息,进一步的我们可以再添加一个类别,比如数据分析.网站开发等等.这样每个类别下有相应的系列,每个系列下有相应的教程.为了实现这一切,我们可以使用外键来连接两个表. 打开main文件夹下的models.py,我们新增两个model:TutorialCategory和TutorialSeries,新增后的mo…
今天来实现如何在页面弹出一些信息,比如注册成功后弹出注册成功的信息.这一点可以通过materialize里的Toasts来实现. django自带的messages可以告诉我们是否注册成功,以及注册失败,或者提出警告.我们首先修改views.py,来引入messages: from django.shortcuts import render, redirect from django.http import HttpResponse from .models import Tutorial f…
今天我们来学习给页面添加一个Sidebar,根据Sidebar跳转到相应的tutorial. 打开views.py,编辑single_slug函数: def single_slug(request, single_slug): categories = [c.category_slug for c in TutorialCategory.objects.all()] if single_slug in categories: matching_series = TutorialSeries.ob…
今天来实现网站的登入和登出功能. 首先我们需要在urls.py中添加路径,注意此处的路径和在导航栏中设置的文字路径保持一致: from django.urls import path from . import views app_name = 'main' #此处为了urls的命名空间 urlpatterns = [ path('', views.homepage, name='homepage'), path('register/', views.register, name='regist…
今天学习如何写一个注册用户的界面. 上一节的导航栏中我们修改了导航栏右侧的文字为register并将路径设置为/register,内容如下: <li><a href="/register">Register</a></li> 为了让我们在点击Register的时候,可以成功跳转到register的页面,我们需要新建一个register.html的文件,内容如下: {% extends 'main/header.html' %} {% bl…
今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发布日期,因此修改models.py的内容如下: from django.db import models # Create your models here. class Tutorial(models.Model): tutorial_title = models.CharField(max_le…
今天继续学习外键的使用. 当我们有了category.series和很多tutorials时,我们查看某个tutorial,可能需要这样的路径http://127.0.0.1:8000/category/series/tutorial,这样看上去十分的繁琐,我们希望无论是在category下还是在series.tutorials下,都只有一级路径. 那么如何做呢?首先在views.py中,我们定义一个single_slug函数: def single_slug(request, single_s…