在服务器上安装ssl证书时,是否需要更改php form submit和mysql Inserter代码?

ql3eal8s  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(429)

我希望你今天没事。
我有个问题找不到确切答案。大部分的资源使我相信这个问题是没有意义的,我不需要担心,但我不确定,不幸的是。
我有一个简单的网站,没有什么太复杂。在该站点上有一个表单,用户可以在其中提交使用简单php函数保存到mysql数据库的数据。数据通过post提交,经过净化,然后发送到localhost数据库,使用mysqli()和prepared语句插入到表中。
现在说正题。现在一切正常,但是数据可能是私有的,所以我想使用ssl证书(托管提供商也出售证书,所以安装本身就是一键操作)
问:我是否需要修改我的ssl兼容性代码?
我从来没有这样做过,所以在我的简单的情况下,有什么事情,我应该考虑和学习?
我知道inserting函数本身可能不需要任何修改,因为它连接到与后端位于同一主机上的数据库,但是表单post毕竟来自外部用户,所以我应该担心吗?
还有一个更广泛的问题:对于像我这样的简单网站(如图所示,只是一些常规的html、css、php,一些用于前端样式设计和google analytics和tag manager的vanilla js和jquery),在切换到ssl时,我还应该考虑什么,除了重新配置htaccess以强制观众使用https和确保没有混合内容之外?
我读到的每一篇文章都让我相信,一旦主机提供商安装了证书,我就可以直接键入 https://example.com 就这样,一切正常。
是真的吗?
对不起,如果这个问题是蹩脚的,但我找不到确切的答案-我不明白的事情有时。谢谢你提前回复。
这是我的一些代码,以防万一。
index.php和表单:

<?php

// Nonce (not mentioned in the question, but I didn't want to omit it for clarity)
$timestamp = time();
$form_action = 'submit_form';
$nonce = create_nonce($form_action, $timestamp);

// Pushing data 
if(isset($_POST['form1'])){
    if ( ! empty( $_POST ) ) { 
        $insert = process_data($_POST);
    }
}

?>

// The Form

<form action="" method="post">

// Nonce fields, ignore
    <input type="hidden" name="timestamp" value="<?php echo $timestamp; ?>">
    <input type="hidden" name="form_action" value="<?php echo $form_action; ?>">
    <input type="hidden" name="nonce" value="<?php echo $nonce; ?>">

// Here is the rest of the form
    <input type="text" name="stuff1" required>
    <input type="text" name="stuff2" required>
    <input type="text" name="stuff3" required>
    <input type="text" name="stuff4" required>
    <input type="text" name="stuff5" required>
    <button type="submit" name="form1">SEND STUFF</button>
</form>

功能本身:

// NONCE - Creating the nonce
if ( ! function_exists( 'create_nonce' ) ) {
    function create_nonce($action, $time) {
        $str = sprintf('%s_%s_%s', $action, $time, NONCE_SALT1);
        $nonce = hash('sha512', $str);

        return $nonce;
    }
}

// NONCE - Verification
if ( ! function_exists( 'verify_nonce' ) ) {
    function verify_nonce($nonce, $action, $time) {
        $check = create_nonce($action, $time);

        if ( $nonce == $check ) {
            return true;
        }

        return false;
    }
}

// Now the important bit: the function processing data from the form
if ( ! function_exists( 'process_data' ) ) {
    function process_data($post) {
        // Check nonce
        $verify = verify_nonce($post['nonce'], $post['form_action'], $post['timestamp']);

        if ( false === $verify ) {
            return false;
        }

        // Sanitization
        $args = array(
            'stuff1' => 'FILTER_SANITIZE_STRING',
            'stuff2' => 'FILTER_SANITIZE_STRING',
            'stuff3' => 'FILTER_SANITIZE_STRING',
            'stuff4' => 'FILTER_SANITIZE_STRING',
            'stuff5' => 'FILTER_SANITIZE_STRING',
        );

        $filter_post = filter_var_array($post, $args);

        // Insert into the database
        $mysql = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

        $stmt = $mysql->prepare("
            INSERT INTO mydatatable (stuff1,stuff2,stuff3,stuff4,stuff5) 
            VALUES(?,?,?,?,?)
        ");

        $stmt->bind_param("sssss", 
            $filter_post['stuff1'], $filter_post['stuff2'], $filter_post['stuff3'], $filter_post['stuff4'], $filter_post['stuff5']
        );

        $insert = $stmt->execute();

        // Closing connections

        $stmt->close();
        $mysql->close();

        return $insert;
    }
}
yduiuuwa

yduiuuwa1#

安装ssl证书后,您的网站必须使用带有https的url来处理数据。我建议表单方法应该是post,因为提议使用ssl,因为 enctype="multipart/form-data" 当页面已经使用https加载时,属性不会有太大区别。
当从浏览器(客户端)用https从一个打开的页面发送数据到一个url(包含在action属性中)时,就像你做的那样,浏览器将把加密的信息发送到宿主服务器。反过来,php将接收这些干净的数据进行操作。就服务器级数据安全而言,我认为审查url参数化就足够了,可以将其包含在htaccess文件中,就像使用www和非www的url一样,两个https url都必须工作,包括返回404代码(如果找不到)或301(重定向)请参阅中的更多信息https://www.htaccessredirect.net/index.php

相关问题